开发者 | jrf |
---|---|
更新时间 | 2016年4月30日 13:41 |
捐献地址: | 去捐款 |
PHP版本: | 3.6 及以上 |
WordPress版本: | 4.4 |
版权: | GPLv2 |
/wp-content/plugins/
directory. Alternatively, you can install directly from the Plugin directory within your WordPress Install.This plugin is only meant to be used for development purposes, but shouldn't cause any issues if run on a production site.
A shortcode is a WordPress-specific code that lets you do nifty things with very little effort. Shortcodes can embed files or create objects that would normally require lots of complicated, ugly code in just one line. Shortcode = shortcut. Source For more information about using shortcodes in WordPress:
There are two possibilities here:
See the previous answer.
To determine whether a shortcode is used in a page, only the post content is evaluated. If you add content to the page using shortcodes in other areas (for example: widgets) or via the theme, those uses will not be recognized.
Generally speaking you can. However, don't forget to always check whether the shortcode is registered before you use it! It may not be available on all pages and surely not on all WP installs.
if ( shortcode_exists( 'shortcode' ) ) { /* Your code here */ // echo do_shortcode( 'some content containing a [shortcode /]' ); }
I've tried to make this as easy and painless as possible.
Just add a filter to enrich the information this plugin has about your shortcode. The easiest way is to use the db_shortcodes_info_{shortcode}
filter which will only be applied to your shortcode.
add_filter( 'db_shortcodes_info_{your_shortcode}', 'filter_my_shortcode_info' ); function filter_my_shortcode_info( $info ) { // enrich the object return $info; }
The $info
object you receive and are expected to return will contain the currently known information about the shortcode.
$info
is expected to contain (a selection of) the following parameters:
stdClass( $name = (string) 'Friendly name for your shortcode', $description = (string) 'Description of your shortcode', $self_closing = (bool) true/bool, // whether the shortcode is self-closing $parameters = array( 'required' => array( (string) 'attribute_name' => (string) 'attribute description', ), 'optional' => array( (string) 'attribute_name' => (string) 'attribute description', ), ), $info_url = '', )
If you happen to already provide similar information using the sim_{shortcode}
filter for the LHR-Shortcode list plugin, no need to do anything extra, that information will be picked up by this plugin.
Similarly, if you provide information for the Shortcake/Shortcode UI feature plugin, that information will be used automatically to enrich the available information.
In version 1.0 of the plugin $info
variable passed to the filter was an array. This has changed in version 2.0.
I'm aware that this is a backward compatibility break, but I've done some quite extensive searches and considering I did not find any plugin using the filter (yet), I decided this backward compatibility break would have little to no effect and therefore would be safe to implement.
If you did already have a filter in place, sorry I didn't find your plugin/theme! Not to worry though, I've tried to make it really easy to upgrade your code.
First off, you'll need to change the add_filter()
hook in code and your function signature to now received two variables. The first variable will be the new object, but the second variable will still be an array in the format which was passed in 1.0 so you can continue to use that in your function to enrich the information.
Secondly, as all this plugin uses are the properties of the object, you can just cast your array to an object in the return and it'll work again.
Old code for v1.0:
add_filter( 'db_shortcodes_info_{your_shortcode}', 'filter_my_shortcode_info' ); function filter_my_shortcode_info( $info ) { // enrich the array return $info; }
Updated code for v2.0:
add_filter( 'db_shortcodes_info_{your_shortcode}', 'filter_my_shortcode_info', 10, 2 ); function filter_my_shortcode_info( $info_object, $info ) { // enrich the array return (object) $info; }
Have you read what it says in the beautifully red bar at the top of your plugins page ? As it says there, the Debug Bar plugin needs to be active for this plugin to work. If the Debug Bar plugin is not active, this plugin will automatically de-activate itself.
must-use
plugins directory.'db_shortcodes_info_{your_shortcode}'
filter: the behaviour of this filter has changed from passing an array, to passing an object. Please read the FAQ for information on how to deal with this change !
playlist
shortcode.