Add_ShortCode()在函数内不起作用

时间:2012-08-27 作者:Force Flow

我有一个自定义的帖子类型bhour, 带字段bh_shortcode. 保存这种类型的帖子时,我希望它根据帖子的值bh_shortcode.

如果bh_shortcode 是“test”,当一个[测试]快捷码标记出现在一个普通的post类型上时,不会发生任何事情--[测试]文本不会被替换。

如果我放置add_shortcode(\'test\',\'save_bhour_details\'); 在功能之外,将替换[测试]文本。

如何使用add_shortcode 函数内部的另一个函数?

function bhour_shortcode_handler(){
    global $post,$bhourdays;

    $output=\'<p>this is a test</p>\';

    return $output; 
}



add_action(\'save_post\', \'save_bhour_details\');

function save_bhour_details(){
    global $post, $bhourdays;

    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ){
        return;
    }

    if ( get_post_type($post) != \'bhours\'){
        return;
    }

    //retrieve current values
    $current = get_post_custom();

    //if($_POST[\'bh_shortcode\']!==$current[\'bh_shortcode\'][0]){
        //remove current shortcode
        remove_shortcode($current[\'bh_shortcode\'][0]);  

        //save new value
        save_bhour_field(\'bh_shortcode\');

        //get current values
        $current = get_post_custom();

        //register new shortcode
        add_shortcode($current[\'bh_shortcode\'][0], \'bhour_shortcode_handler\');
    //}

    //register new shortcode
    add_shortcode($current[\'bh_shortcode\'][0], \'bhour_shortcode_handler\');
}

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

只需按照插件中的以下代码示例使用即可。,

function wp_shortcode( $atts ) {
    extract( shortcode_atts( array(
        \'foo\' => \'something\',
        \'bar\' => \'something else\',
    ), $atts ) );


    //return "foo = {$foo}";
    return your_function();
}
add_shortcode( \'your-shortcode\', \'wp_shortcode\' );
我认为这可能有助于你满足自己的需求。

结束

相关推荐

Shortcode perfomance solution

我有一个对性能至关重要的站点。在使用短代码时,我考虑了服务器解析和返回内容所需的时间,而不是允许一些HTML(<div class=\"redletter\">) 浏览TinyMCE编辑器。与此同时,我的代码是:// [redletter]Content[/redletter] add_shortcode(\'redletter\', \'redletter_do\'); function redletter_do($atts, $content = null) {