If Shortcode

外掛說明

This plugin provides an [if] shortcode to conditionally render content. The syntax is the following:

[if condition1 condition2=false condition3]{content}[/if]

Conditions are passed as attribute names. Multiple conditions evaluate to the result of ORing all of them. In other words, if at least one condition evaluates to the desired boolean result, {content} is rendered, otherwise it is discarded.
Attribute values determine if we want the condition to be true or false. A value of '0', 'false', '' (the empty string), 'null' or 'no' means we expect the condition to be false. Anything else, including the absense of a value, is interpreted as true.

For example, suppose that we want to include a sentence in a post, but only for anonymous visitors:

[if is_user_logged_in=no]The Sentence.[/if]

It also provides an [else] shortcode and an [eitherway] one for use inside [if] blocks. [else] will render its content if the condition evaluates to false, and [eitherway] will render its content regardless of the evaluation result.
When used outside an [if] block, these shortcodes behave as if the whole content is surrounded by an [if] shortcode whose condition evaluates to true. In other words, an [else] shortcode would not render any content, while a [eitherway] one would. You can use as many of these shortcodes as you like in a single [if] block, which gives you the ability to do things like:

    - Am I logged in?
    [if is_user_logged_in]- Yes you are.
    [else]- No you are not.
    [/else][eitherway]- I'm sorry, what?
    [/eitherway]- I said YOU A-R-E LOGGED IN!!!
    [else]- YOU ARE NOT LOGGED IN!!! What's the matter with you?[/else][/if]

A multitude of conditions are supported out-of-the-box. The following evaluate to the result of the corresponding WordPress Conditional Tag, using the no-parameter syntax:

    is_single
    is_singular
    is_page
    is_home
    is_front_page
    is_privacy_policy
    is_attachment
    is_category
    is_tag
    is_tax
    is_author
    is_archive
    is_year
    is_month
    is_date
    is_day
    is_time
    is_feed
    is_search
    is_sticky
    is_preview
    has_term
    has_excerpt
    comments_open
    pings_open
    is_404
    is_user_logged_in
    is_super_admin
    is_multi_author
    is_multisite
    is_main_site
    is_child_theme

For example, the evaluation of the is_page condition is equivalent to calling is_page() with no parameter.

Extending

The functionality of the plugin can be extended by other plugins, by means of adding custom conditions through filters. To add a custom condition, a filter hook must be defined in the following manner:

add_filter($if_shortcode_filter_prefix.'my_condition','my_condition_evaluator');

function my_condition_evaluator($value) {
    $evaluate=.... /* add your evaluation code here */
    return $evaluate;
}

Then, you can use your custom condition like so:

[if my_condition]{content}[/if]

A big thanks to M Miller for the normalize_empty_atts() function.

安裝方式

Install the plugin using the usual method described in the codex.

使用者評論

2016 年 12 月 23 日
I needed to show a login form only to people not logged in. This little plugin was perfect! Now I’m getting all kinds of ideas for what I can do with it. Thanks!
2016 年 9 月 3 日
If you are wanting to hide or show links or text based upon logged in state, author or quite a few other “is” conditions this plugin is perfect. Thanks G J
閱讀全部 7 則使用者評論

參與者及開發者

以下人員參與了開源軟體〈If Shortcode〉的開發相關工作。

參與者

將〈If Shortcode〉外掛本地化為台灣繁體中文版

對開發相關資訊感興趣?

任何人均可瀏覽程式碼、查看 SVN 存放庫,或透過 RSS 訂閱開發記錄

變更記錄

0.3.0

  • Improvement: Refactored code for PHP 5.4+
  • Addition: Added some more tags

0.2.1

0.2.0

  • Addition: [else] shortcode
  • Addition: [eitherway] shortcode

0.1.0

  • First release.