=== functionsCapacitor ===
Contributors: oliezekat
Tags: api, codex, shortcode, content, post, page, pages, posts, links, archives, categories, widget, wordpressmu, wpmu, wpms, multi-site, multisite
Requires at least: 3.0.1
Tested up to: 4.0.0
Stable tag: trunk
This plugin allow to apply some WordPress API's functions into your post/page content or as a widget.
== Description ==
> Back WordPress API to the content.
You can request some* functions of WordPress API with same syntax for arguments into your posts, pages, or widgets content.
functionsCapacitor will insert function result into your content as HTML output.
(*) see [Supported functions](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Supported-functions)
or [conditional tags](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Supported-conditional-functions).
= Features =
* Safe process to use this plugin on WordPress MU or WP MultiSite.
* Allow to personalize [Embedded output](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Embedded-output)
for each functions.
* Easy and powerfull [Functions arguments syntax](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Functions-arguments-syntax)
to apply any WordPress API options.
* Generic functions arguments with [Magic keywords](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Magic-keywords).
* NEW: use [WordPress conditional tags](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Supported-conditional-functions) as option to display a widget.
* Structured source-code to prevent any conflict.
Three methods to use WordPress API functions :
= Method by shortcode tag =
Insert a tag into your content like [fct function_name="parameter1=value¶meter2=value"].
One shortcode tag can request several functions, input [fct function_name1="arguments" function_name2="arguments"].
= Method with a widget =
Add a functionsCapacitor widget, select a function, input function parameters like "parameter1=value¶meter2=value" (without quotes).
Optional: choose a [supported conditional function](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Supported-conditional-functions) to decide where to display your widget.
= Method by custom fields =
Set a custom field name with function name and put function arguments into custom field value like "parameter1=value¶meter2=value" (without quotes).
* Result is always inserted at end.
* Plugin has priority 5. Most plugins use priority 10.
* This method is applied if post/page is displayed.
= Examples =
* Tag cloud of popular posts tags,
insert [fct wp_tag_cloud]
* List of children pages of current page,
insert [fct wp_list_pages="title_li=&child_of=%postID%&depth=1"]
* List of category's recent posts with excerpts,
insert [fct wp_get_recent_posts="category=X&fct:show_excerpt=1"]
with X equal category ID number
* List of categories without default category,
insert [fct wp_list_categories="title_li=&exclude=%defaultcatID%"]
== Installation ==
1. Upload `functionscapacitor.php` to the `/wp-content/plugins/` directory
2. Activate the plugin through the 'Plugins' menu in WordPress
== Other Notes ==
== Embedded output ==
Any functionsCapacitor request will insert `
functions output
`.
Shortcode method allow to personalize main container like
[fct container="HTML tag name" class="class(es) name(s)" style="CSS properties" function1="args" function2="args"].
set container="" to remove main container.
Some functions output were inserted with dedicated container like
``
or `function output
`.
Personalize this container with [Special functions parameters](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Special-functions-parameters).
== Functions arguments syntax ==
Follow these examples to setup your requests :
* "parameter1=something¶meter2=25",
parameter1 and parameter2 typed as strings.
* "parameter1=something¶meter2=false",
parameter2 typed as boolean.
* "parameter1=¶meter2= ¶meter3=''",
any parameters equal empty string.
* "parameter1= something ¶meter2=' something '",
parameter1 equal 'something',
parameter2 equal ' something '.
* "parameter1=something¶meter2=array('something','something')",
parameter2 typed as an array of 2 strings.
* "parameter1=something¶meter2=array(10,5,20)",
parameter2 typed as an array of 3 integers.
* "parameter1=something¶meter2=array(true,false)",
parameter2 typed as an array of 2 booleans.
Not supported issues :
* parameter's value can't contain "&" or "=" characters.
* parameter's value can't contain an associative array like array('name'=>value,'name'=>value).
* parameter's value can't contain an array of arrays.
* parameter's value can't contain a PHP variable like $post->ID,
see [Magic keywords](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Magic-keywords).
* parameter's value can't request a PHP or WordPress function.
* parameter's value can't contain PHP source-code.
== Magic keywords ==
Use these keywords to obtain variables values into your functions arguments :
* %postID% => $post->ID,
ID of post or page where made the request :
related post/page into a shortcode,
or current post/page into a widget.
* %postparent% => $post->post_parent,
ID of parent page where made the request.
* %postauthor% => $post->post_author,
author ID of post where made the request.
* %defaultcatID% => default_category,
ID of default category for newest posts.
* %posttagIDs% => wp_get_post_tags(),
string of current post tags IDs as "1,2,3,..."
* %posttagslugs% => wp_get_post_tags(),
string of current post tags slugs as "slug-name,slug-name,..."
You can use magic keywords into an array.
Example: wp_list_categories="exclude=array(%defaultcatID%,1,2,...)"
== Special functions parameters ==
* fct:container to set HTML tag of function container.
Set "fct:container=''" to remove this container.
Each functions have a default container related to its output.
* fct:container_id to set container "id" attribute.
* fct:container_class to set container "class" attribute.
Function name as default.
Example with shortcode: [fct function_name="fct:container_class=name¶m1=value¶m2=value"].
* fct:container_style to set container "style" attribute.
functionsCapacitor not create a container if the API function still return a container.
See [WordPress Codex](http://codex.wordpress.org/Function_Reference "Wordpress documentation") to personalize them.
== Supported functions ==
* get_the_post_thumbnail()
with size=thumbnail|medium|large|post-thumbnail
or size name defined with add_image_size() into theme's file functions.php.
* get_the_tag_list()
with before=''&sep=' '&after='' as default,
apply only on page or post,
rendered into DIV container
* wp_get_archives()
with echo=0&format=html as default
* wp_get_recent_posts()
rendered as list with UL container,
with exclude=%postID%&suppress_filters=false&post_status=publish&fct:perm=readable as default
(see bellow)
* wp_list_authors()
with echo=0 as default
* wp_list_bookmarks()
with echo=0 as default
* wp_list_categories()
with echo=0 as default
* wp_list_pages()
with echo=0 as default
* wp_nav_menu()
with echo=false as default,
see Codex to setting its container
* wp_tag_cloud()
with echo=0 as default,
format=flat|list only
See [WordPress Codex](http://codex.wordpress.org/Function_Reference "Wordpress documentation") about these functions and their arguments syntax.
Need you to support more functions, mail to oliezekat@yahoo.fr
= wp_get_recent_posts() =
* if fct:perm=readable hide draft, future, pending, protected posts
but display private posts if user is allowed.
* if fct:perm='' not output permalink of draft, future, pending, private posts.
* set fct:show_excerpt=1|true to display posts excerpts.
* set fct:show_date=1|true to display posts dates.
* set fct:show_thumbnail=1|true to display post thumbnail,
with fct:thumbnail_size=thumbnail|medium|large|post-thumbnail
or size name defined with add_image_size() into theme's file functions.php.
* fct:show_thumbnail=true if fct:thumbnail_size is defined
* display excerpt and thumbnail for draft, future, pending, private, and protected posts
but not create an excerpt from content.
== Supported conditional functions ==
* cat_is_ancestor_of()
check if current category is child of conditional argument.
* in_category()
* is_category()
* is_front_page()
* is_home()
* is_page()
* is_single()
See [WordPress Conditional Tags](http://codex.wordpress.org/Conditional_Tags "Wordpress documentation") about these functions and their arguments syntax.
= Not canonical conditional functions =
These functions are designed for this plugin only, not available elsewhere, and not documented into the WordPress Codex.
* in_tree_of()
check if page, post, or category is descendant of conditional argument (or itself),
require argument as page or category numeric ID.
* is_category_in_tree_of()
check if category is descendant of conditional argument (or itself),
require argument as category numeric ID.
* is_page_descendant_of()
check if page is descendant of conditional argument,
require argument as page numeric ID.
* is_page_in_tree_of()
check if page is descendant of conditional argument (or itself),
require argument as page numeric ID.
* is_single_in_tree_of()
check if post is in descendant of conditional argument,
require argument as category numeric ID.
= Conditional functions arguments syntax =
Support only arguments as single value ; string, numeric, or [magic keyword](http://wordpress.org/extend/plugins/functionscapacitor/other_notes/#Magic-keywords).
== Frequently Asked Questions ==
= Is it safe ? =
Yes ! And you can install functionsCapacitor on WPMU or WPMS.
* functionsCapacitor not execute or eval users input (function name or arguments).
* functionsCapacitor output is managed by WordPress itself, and related to users role.
Example: wp_list_pages() function will not return private pages if current user is anonymous.
= How come from functions capacitor idea ? =
> I was standing on my chair in front of the computer,
> I was copy-paste a hack into a template,
> the desk was wet,
> my mouse slipped, right button hit the flowerpot,
> and when I saw the result on screen I had a revelation ! A vision !
> The functions capacitor !
= D'où vient l'idée du convecteur de fonctions ? =
> J'étais assis devant mon ordinateur,
> j'allais copier-coller un hack dans un template,
> le bureau était mouillé,
> ma souris a glissé, le bouton-droit a heurté le pot de fleurs,
> et en voyant le résultat à l'écran j'ai eu une révélation ! Une vision !
> Le convecteur de fonctions !
== Changelog ==
= 0.9.6 =
* support is_page() conditional function.
* add is_page_in_tree_of() conditional function (not canonical).
* in_tree_of() support page ID as argument.
* add is_page_descendant_of() conditional function (not canonical).
* Tested with WordPress 4.0 (and 3.5.1).
= 0.9.5 =
* fix issue while esc_textarea() API is missing.
* support is_category() conditional function.
* support cat_is_ancestor_of() conditional function.
* support is_single() conditional function.
* support in_category() conditional function.
* add is_category_in_tree_of() conditional function (not canonical).
* add is_single_in_tree_of() conditional function (not canonical).
* add in_tree_of() conditional function (not canonical).
* support get_the_post_thumbnail() function.
= 0.9.4 =
* add fct:show_date for wp_get_recent_posts().
* add fct:container_id special parameter.
= 0.9.3 =
* add conditional options to choose when to display or not a widget,
* support is_home() conditional function.
* support is_front_page() conditional function.
= 0.9.2 =
* set post_status=publish as default for wp_get_recent_posts().
* allow post_status=draft|future|pending for wp_get_recent_posts(),
but require to set fct:perm='' to display these posts.
* if request wp_get_recent_posts() with fct:perm='',
any posts with as draft, future, pending, private status are display without permalink.
= 0.9 =
* add fct:perm=readable for wp_get_recent_posts().
= 0.8 =
* add fct:container special parameter.
* support get_the_tag_list().
* allow to personalize "style" attribute of shortcode main container.
* add fct:container_style special parameter.
* add %defaultcatID% magic keyword.
* add %posttagIDs% magic keyword.
* add %posttagslugs% magic keyword.
= 0.7 =
* add fct:show_thumbnail and fct:thumbnail_size parameters for wp_get_recent_posts().
* allow to personalize shortcode main container.
= 0.6 =
* support wp_list_authors().
* add %postparent% magic keyword.
* add %postauthor% magic keyword.
= 0.5 =
* purpose to use API's functions as a widget.
* set "exclude=%postID%" as default for wp_get_recent_posts().
= 0.4 =
* support wp_get_recent_posts() as UL list rendering.
* support parameter value as an array of strings, integers, or booleans
like "parameter=array('string',integer,true,false,...)".
* check an API function exists.
* add special parameter "fct:container_class=class(es) name(s)".
= 0.3 =
* support wp_tag_cloud() function.
= 0.2 =
* support wp_nav_menu() function.
* fix function arguments processing from shortcode tag.
= 0.1 =
* Experimental release which support wp_get_archives(), wp_list_bookmarks(), wp_list_categories(), and wp_list_pages().