有很多方法可以做到这一点,一种可能是使用使用静态变量的函数。
然而,在您能够获得在短代码中设置的参数之前,必须先处理短代码。。。
function foobar_func( $atts = array(), $out = FALSE ){
static $args = array(
\'foo\' => \'default foo\',
\'bar\' => \'default bar\'
);
if ( $out ) return $args;
$args = shortcode_atts( $args, $atts, \'myshortcode\' );
echo \'The value for "foo" argument set in shortcode is: \' . $args[\'foo\'] . \'<br>\';
echo \'and the value for "bar" argument set in shortcode is: \' . $args[\'bar\'];
}
add_shortcode( \'myshortcode\', \'foobar_func\' );
以及
after 如果已处理短代码,则可以在第二个参数设置为true的情况下,让所有参数再次调用函数:
$shortcode_args = foobar_func( NULL, TRUE );
如果调用
before 处理短代码时,它始终返回默认值。
另一种可能更可靠的方法是触发自定义操作,并使用它来传递shortcode参数:
function foobar_func( $atts = array() ){
$defaults = array(
\'foo\' => \'default foo\',
\'bar\' => \'default bar\'
);
$args = shortcode_atts( $defaults, $atts, \'myshortcode\' );
echo \'The value for "foo" argument set in shortcode is: \' . $args[\'foo\'] . \'<br>\';
echo \'and the value for "bar" argument set in shortcode is: \' . $args[\'bar\'];
// custom action
do_action( \'myshortcode_processed\', $args );
}
add_shortcode( \'myshortcode\', \'foobar_func\' );
然后钩住操作以获取参数并使用它们:
add_action( \'myshortcode_processed\', function( $shortcode_args ) {
// do whatever you want with $shortcode_args
var_dump( $shortcode_args );
});