将选项存储在短码中

时间:2012-12-07 作者:Rob Myrick

我正在创建Wordpress插件。我想创建一个简单的快捷码,根据用户在管理设置页面上更改的设置更改输出。

首先,我有如下内容:

add_shortcode( \'my_shortcode\', \'my_shortcode\');
  function my_shortcode($atts) {
    $atts = shortcode_atts (
  array (
  \'display\' => get_option(\'setting_1\'),
  \'toolbar\' => get_option(\'setting_2\'),
  \'branding\' => get_option(\'setting_3\')
  ), $atts);
     }
接下来我需要做什么才能将这些设置存储到一个单独的短代码中,即使设置发生更改,该代码仍保留其名称?

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

如果要根据管理选项更改显示,则根本不需要处理shortcode_atts 配置总成$attributes 传递到回调中的。传入的属性(并由shortcode_atts) 旨在根据最终用户的使用方式改变短代码的工作方式。

拿着这个:[wpse75238 arg1="asdf" arg2="asdf"]

<?php
add_shortcode(\'wpse75238\', \'wpse75238_shortcode_cb\');
function wpse75238_shortcode_cb($atts)
{
    return var_export($atts);
}
类似于array ( \'arg1\' => \'asdf\', \'arg2\' => \'asdf\' ) 会出来的。

shortcode_atts 只需以类似的方式为您设置默认值(并删除“未经授权”的密钥)wp_parse_args.

如果您只想根据管理页面选项更改内容,则无需尊重用户输入。

<?php
add_shortcode(\'wpse75238\', \'wpse75238_shortcode_cb\');
function wpse75238_shortcode_cb()
{
    if(\'some_value\' = get_option(\'wpse75238_opts\'))
    {
        // do stuff because some_value was set.
    }
}
使用参数调用短代码不会改变上述短代码的任何内容。

结束