是否使用数组自动生成WordPress快捷码?

时间:2014-08-26 作者:maheshwaghmare

我创建了一个短代码,它可以自动生成具有给定数组键和值的短代码。函数名不会动态生成。

注意:数组键=ShortcodeName,值=Wordpress选项字段。

add_shortcode("auto_gen", "auto_gen");
function auto_gen() {
    $a = array(
        "get_address"       =>  "mg_admin_address",
        "get_phone"         =>  "mg_admin_phone",
        "get_fax"           =>  "mg_admin_fax",
        "get_email"         =>  "mg_admin_email",
        "get_hrs_mon"       =>  "mg_work_hrs_mon_frd",
        "get_hrs_sat"       =>  "mg_work_hrs_sat"
    );
    foreach ($a as $k => $v) {
        if(has_shortcode($k)) {
            echo "<br>Found: ". $k;
        } else {
            add_shortcode($k,  $k. "_init");
            function $k. "_init"() {
                return get_option[$v, \'\'];
            }
        }
        add_shortcode();
        echo $k ." -> ". $v. "<br />";
    }
}
有任何可能的方法可以做到这一点。

NOTE:

这里,get\\u address array key是一个短代码。它是在通过循环时动态生成的。get\\u地址可更改。如果我用get\\u user\\u address更改get\\u address,则生成get\\u user\\u address。“get\\u address”、“get\\u phone”可在末级更改。

开发人员还可以使用get\\u选项生成短代码来访问创建的wp\\u选项,只需将元素推入数组即可。e、 g.“shortcode\\u name”=>“option\\u name”

1 个回复
SO网友:birgire

从数组自动生成短代码:

您可以尝试以下短代码自动机:

/**
 * Setup the Shortcode Automat
 *
 */

function shortcode_automat_setup()
{   
    $settings = array(
        "get_address"   =>  "mg_admin_address",
        "get_phone"     =>  "mg_admin_phone",
        "get_fax"       =>  "mg_admin_fax",
        "get_email"     =>  "mg_admin_email",
        "get_hrs_mon"   =>  "mg_work_hrs_mon_frd",
        "get_hrs_sat"   =>  "mg_work_hrs_sat"
    );

    $sc = new ShortCodeAutomat( $settings );
    $sc->generate();
}

add_action( \'wp_loaded\', \'shortcode_automat_setup\' );
然后,您可以使用以下工具从主题/插件进行测试:

echo do_shortcode( "[get_address]" );
echo do_shortcode( "[get_phone]" );
echo do_shortcode( "[get_fax]" );
或使用以下方法进行测试:

[get_address]
[get_phone]
[get_fax]
在您的帖子/页面内容中。

下面是我们的演示类定义:

/**
 * class ShortCodeAutomat
 */

class ShortCodeAutomat
{
    protected $settings = array();

    public function  __construct( $settings = array() )
    {
        $this->settings = $settings;
    }

    public function __call( $name, $arguments )
    {
        if( in_array( $name, array_keys( $this->settings ) ) )
        {
            return get_option( sanitize_key( $this->settings[$name] ), \'\' );
        }
    }

    public function generate()
    {
        foreach( $this->settings as $shortcode => $option )
        {
            add_shortcode( $shortcode, array( $this, $shortcode ) );
        }
    }
} // end class

结束

相关推荐

Shortcode won't execute

我用我有限的知识,google和stackexchange创建了一个短代码。但当我加载页面时,它会加载到页面内容上方,并显示为html文本。(shortocode text) ------- page contents appearing normally 正如我所说,我对这种类型的编码知识有限(零),我无法找出哪个部分/什么部分不起作用。我附加了我使用的代码的压缩版本,在shortcode函数中显示的内容更少。// Add Shortcode function p_fo