Wordpress从内容中删除短代码

时间:2011-12-17 19:54:49

标签: wordpress function filter shortcode

是否可以在执行the_content()之前从内容中删除图库短代码?我搜索了codex并找到了remove_shortcode( $tag ),但他们没有显示任何示例。

我尝试添加功能

function remove_gallery($content) {
    $content .= remove_shortcode('[gallery]');
    return $content;
}
add_filter( 'the_content', 'remove_gallery', 6); 

它不起作用..

更新

我可以使用下面的代码取消注册短代码,但它也删除了内容

function remove_gallery($content) {
    return remove_shortcode('gallery', $content);
}
add_filter( 'the_content', 'remove_gallery', 6); 

4 个答案:

答案 0 :(得分:6)

我知道这是一个相对陈旧的问题,但strip_shortcodes函数确实有效!

global $post;
echo strip_shortcodes($post->post_content);

如果你问我最简单的方法..

答案 1 :(得分:5)

奇怪。 remove_shortcode(codex link)没有第二个参数。

您将返回remove_shortcode函数的true或false返回,而不是删除短代码的内容。

在那个函数的第二个版本中试试这样的东西:

remove_shortcode('gallery');
return $content;

或者只是把

 remove_shortcode('gallery');

在你的functions.php文件中。之前的海报建议包括[],我猜错了。

答案 2 :(得分:2)

我认为你应该像这样使用子字符串替换:

function remove_gallery($content) {
    return str_replace('[gallery]', '', $content);
}
add_filter( 'the_content', 'remove_gallery', 6); 

请记住,这种方法并没有很好的表现。

更新:您可以通过添加代码取消注册function.php中的镜头代码:

remove_shortcode('[gallery]');

答案 3 :(得分:2)

一个老问题,但经过一些挖掘和一系列答案后,这对我有用:

<?php $content = get_the_content();

echo strip_shortcodes($content);?>

我只是插入画廊,我想删除并单独显示。显然,如果你想删除一个特定的短代码,这可能不是你的解决方案。