Allow PHP in posts and pages adds the functionality to include PHP code in WordPress posts and pages by adding a simple shortcode [php].code.[/php]
This plugin attempts to strip away the automatically generated wordpress <p> and <br/> tags but still allows the addition of your own <p> and <br/> tags using a form of BBcode items such [p][/p] and [br /]
You can also save your most used bits of code as snippets for use across multiple pages.
With Version 2.2, the older tag replacement system has been revamped, hopefully reducing the need to escape some characters for example: [ and ] that shouldnt be changed < and >
With Version 2.3 comes an experimental advanced filter feature which allows you to use standard php code while taking advantange of variables thoughout the entire post content, and functions, as well as no pesky tag replacement.
With Version 3 comes entirely re-written code with support for code snippets being used in conjunction with the advanced filter feature as well as a class variable to share variables between saved snippets and code blocks. This version also comes with UI updates.
Using the plugin couldn’t be simpler; the plugin has 2 variants of shortcode available,
[allowphp] other versions of the shortcode may exist but are not fully supported.
To add the PHP code to your post or page simply place any PHP code inside the shortcode tags.
The shortcode can take a some additional attributes to assist with PHP writing
- “debug” – [1/0] – Turns on error reporting and display errors for snippets
- “silentdebug” – [1/0] – When used with “debug” shows errors in the source code only
- “mode” – [“old”/”new] – Maintained for backwards compatibility only – When set to “old” enables the pre version 2.2.0 code replacement system for that shortcode, when set to “new” with the preparse option enabled it uses the newer code replacement system for that shortcode
In addition to these attributes, a new one has been added called “function”. The function attribute allows the addition of user defined code snippets into the content. The shortcode for snippets is
[php function=x] or
To integrate the snippets with the advanced filter, the shortcode should not contain any additional attributes or spaces
Code snippets can be added in the plugin’s options page and can be re-used on as many pages as you like
The advanced filter is the newest feature of the plugin.
It allows the user to write standard html directly into the html post editor without needing tag replacements.
There are 2 ways to enable the Advanced Filter, the easiest way is to enable it in the plugin options page, the other way is to add “useadvancedfilter”onto the standard shortcode to use it on a shortcode by shortcode basis:
[php useadvancedfilter]...[/php useadvancedfilter] or
[allowphp useadvancedfilter]...[/allowphp useadvancedfilter]
The plugin class contains an array with can be used to share variables around the page, between blocks of php code anywhere.
Variable delarations can be made by accessing the global variable $allow_php as follows:
[<span></span>php] global $allow_php; $allow_php->_shared['my_key'] = 'my value'; [<span></span>/php] <em>This code will set "my value" to index "my_key" within the shared array</em> [<span></span>php] global $allow_php; echo $allow_php->_shared['my_key']; [<span></span>/php] <em>This code will output the index "my_key" within the shared array</em>
This can be useful for passing post information to the sidebar 🙂
Some Important Notes
This plugin strips away all instances of <p> and <br /> therefore code has been added so that if you wish to use tags in your output (e.g.):
[<span></span>php] echo "hello <br /> world"; [<span></span>/php]
The < and > tags will need to be swapped for [ and ] respectively so <p> becomes [p] and </p> becomes [/p] which is converted back to <p> at runtime. these [ ] work for all tags (p, strong, em etc.).
[<span></span>php] echo "hello [br /] world"; [<span></span>/php]
With code written pre-version 2.2.0 you may need to turn on support for the older replacement method as you may experience issues with the code being disrupted as the replacement method has been changed, however you can set the tag replacement method to be the older version in the plugin options or by adding mode=old to the [php] tag, similarly, if you wish to use the new method when you have the old method turn on in the plugin options, just add mode=new to the [php] tag. In the current release, only known html tags are altered by the code, other tags and square bracket items (such as PHP arrays) are no longer affected.
The code replacement method isn’t always perfect however, as certain items such as arrays cannot be accessed during echos and will need to be set as a variable before echo (this doesn’t apply to the advanced filter)
echo "[p]".$myArray."[/p]" <em>as</em> $mya = $myArray; echo "[p]".$mya."[/p];