=== Conditional Custom Fields Shortcode === Contributors: oltdev, godfreykfc Tags: conditional, custom fields, shortcode, template, CMS Requires at least: 2.7 Tested up to: 2.8.2 Stable tag: trunk Use custom field values in you pages or posts. With conditional supports which enables basic templating with custom fields. == Description == A series of shortcodes for using custom field values in pages or posts (or in sidebar widgets - via [Section Widget][1]!), which would then allows you to take store the actual data in custom fields while storing the presentation in the page/post body. This transforms WordPress into an awesome CMS. Keep reading for more inspirations. = Basic Usage = `[cf "custom field name"]` Example: Picture of the day: This would output something like ``, assume the post/page has the custom field "picture-link" and its value is "http://thesite.com/something.jpg". That way, you (or your clients!) would never accidentally take out a div when updating your page because you won't have to touch the page/post body anymore! = Default Values = `[cf "custom field name" default="display this if the CF is undefined"]` Example: Contact [cf "support-email" default="support@mycompany.com"] if you have questions. support@mycompany.com will be displayed there if the custom field "support-email" is not present in that post/page. = Simple Template = `[cf "custom field name" default="default value"]...template...[/cf]` Example: Price: [cf "price" default="Pricing information not available yet."] USD$%value% [/cf] If you cannot use `%value%` as your placeholder text for some reason, you can change it by specifying the placeholder attribute. Example: Price: [cf "price" default="Pricing information not available yet." placeholder="__value__"] USD$__value__ [/cf] = Multiple Values = It's smart enough to do the right thing. If your post has the following custom fields: * concert-date: Jan 14th * concert-date: Jan 28th * concert-date: Feb 2nd Then `[cf "concert-date"]` will output `Jan 14th,Jan 28th,Feb2nd`, exactly what you would expect. You can also optionally provide a separator to replace the default (,). Example: Come to one of our concerts on the following dates: [cf "concert-date" separator=" / "] (=> Jan 14th / Jan 28th / Feb 2nd) = Sorting = `[cf "custom field name" sort="nosort|asc|dsc|random" type="string|int|integer|float|bool|boolean|date|auto"]` You can control how it sort the items (when there's more than one) using the sort attribute (default is `nosort`). By default, it would compare them using PHP's comparison operator (i.e. try to cast them into numeric values, or compare them as strings if that failed). However, you can force a type cast by specifying the type attribute (default is `auto`). = Display Single Value = If display multiple values is not what you want it to do, you can use `[cf single="true"]` to force it to display only the first value. Combining what we have learned so far, you can display a single random value by `[cf single="true" sort="random"]`. = Summary = Syntax for `[cf]` shortcode: (default values in parenthesis) [cf "field-name" default="" placeholder="%value%" single="(false)|true" separator="," sort="(nosort)|asc|dsc|random" type="string|int|integer|float|bool|boolean|date|(auto)"](OPTIONAL) template[/cf] = Conditionals = Conditionals tags is what makes this plugin unique. Here is a list of them: [if-cf-def "custom field name"] Do this when "custom field name" is defined for this page/post [/if-cf-def] [if-cf-ndef "custom field name"] Do this when "custom field name" is NOT defined for this page/post [/if-cf-ndef] [if-cf-eq "custom field name" "value"] Do this when "custom field name" == "value" [/if-cf-eq] [if-cf-neq "custom field name" "value"] Do this when "custom field name" != "value" [/if-cf-neq] [if-cf-lt "custom field name" "value"] Do this when "custom field name" < "value" [/if-cf-lt] [if-cf-gt "custom field name" "value"] Do this when "custom field name" > "value" [/if-cf-gt] [if-cf-let "custom field name" "value"] Do this when "custom field name" <= "value" [/if-cf-let] [if-cf-get "custom field name" "value"] Do this when "custom field name" >= "value" [/if-cf-get] More detailed documentations will be published soon. In the mean time, check out the following examples and the comments in the PHP code to get a rough idea. = Examples = [if-cf-get "deadline" "today" type="date"] Submit your application here. [/if-cf-get] [if-cf-lt "deadline" "today" type="date"] Sorry we regret that we cannot take anymore applications. [/if-cf-lt] [if-cf-def "discounted-price" "discount-expires" logic="and"] This product is on discount, get it now for [cf "discounted-price" /] [cf "discount-expires" default="for a limited time"]before %value%[/cf]! [/if-cf-def] **Please note: It seems that there is a serious bug in WordPress' shortcode parser that prevents shortcodes from functioning correctly in certain occasions.** The developers are hard at work to get this fixed before the 2.8.3 release. (See [#10082][2]) Therefore, please do not report any parser related bugs for the moment. (e.g. the shortcode is displayed on the actual page) [1]: http://wordpress.org/extend/plugins/widget-logic/ [2]: http://core.trac.wordpress.org/ticket/10082 == Installation == 1. Extract the zip file and drop the contents in the wp-content/plugins/ directory of your WordPress installation 2. Activate the Plugin from Plugins page == Frequently Asked Questions == == Screenshots == == Changelog ==