从子主题中删除快捷码

时间:2011-12-10 作者:Teknophilia

我正在尝试删除子主题中的短代码。在我的功能中。php文件(对于子主题),我已经放置了:

function my_remove_shortcode(){
    return \'\';
}
add_shortcode(\'entry-twitter-link\', \'my_remove_shortcode\');
其中,entry twitter链接是在父级中创建的短代码。然而,这个条目仍然出现在我的帖子上。有什么问题吗?

2 个回复
最合适的回答,由SO网友:Joshua Abenazer 整理而成

试试这个。删除已经添加的短代码,然后在init挂钩上添加新的短代码。

function shortcode_cleaner() {
    remove_shortcode( \'entry-twitter-link\' ); // Not exactly required
    add_shortcode( \'entry-twitter-link\', \'my_remove_shortcode\' );
}
add_action( \'init\', \'shortcode_cleaner\' );

function my_remove_shortcode(){
    return \'\';
}

SO网友:Mayeenul Islam

多亏了约书亚的回答,这确实挽救了生命

顺便说一句,我可以提出一个稍微不同的方法。假设您已经创建了一个插件,现在您将发布其pro版本-因此您可以完全控制这两个插件,因此您可以遵循以下操作:

实际插件:

if( !function_exists(\'wpse36092_shortcode\') {
   function wpse36092_shortcode() {
       echo \'This\'; //existing content
   }
}
add_shortcode( \'wpse36092\', \'wpse36092_shortcode\' );
Pro插件:
function wpse36092_shortcode() {
       echo \'That\'; //overwriting content
}
add_shortcode( \'wpse36092\', \'wpse36092_shortcode\' );
在此方法中,函数的名称应保持完全相同。

您也可以在父主题和子主题中执行相同的操作。

但约书亚的回答还是很好的。

结束

相关推荐

GET_SHORTCODE_regex()只与第一个短码匹配

法典中有an example 使用get\\u shortcode\\u regex()检查是否在给定页面上调用了短代码:$pattern = get_shortcode_regex(); preg_match(\'/\'.$pattern.\'/s\', $posts[0]->post_content, $matches); if (is_array($matches) && $matches[2] == \'YOURSHORTCODE\') { /