Wordpress 从内容中删除简码

Posted

技术标签:

【中文标题】Wordpress 从内容中删除简码【英文标题】:Wordpress remove shortcode from content 【发布时间】:2012-01-22 18:26:25 【问题描述】:

在执行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); 

【问题讨论】:

【参考方案1】:

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

<?php $content = get_the_content();

echo strip_shortcodes($content);?>

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

但请记住,strip_shortcodes() 将删除 all 短代码,而不仅仅是“图库”短代码。该问题仅涉及“画廊”短代码。【参考方案3】:

奇怪。 remove_shortcode (codex link) 不接受第二个参数。

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

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

remove_shortcode('gallery');
return $content;

或者直接放

 remove_shortcode('gallery');

在您的functions.php 文件中。之前的海报建议包括 [ ] 的,我猜这是错误的。

【讨论】:

谢谢!我没有返回内容。如果您可以指定要删除的短代码,strip_shortcodes() 将是最佳选择。【参考方案4】:

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

function remove_gallery($content) 
    return str_replace('[gallery]', '', $content);

add_filter( 'the_content', 'remove_gallery', 6); 

请记住,这种方法的性能并不好。

更新:可以在function.php中通过添加代码来注销shotcode:

remove_shortcode('[gallery]');

【讨论】:

谢谢!不幸的是,str_replace 方法有效,但取消注册短代码无效。 我能够使用过滤器取消注册,但出现问题。请参阅上面的更新 我认为您所做的不正确。要删除短代码,只需在 function.php 中添加此代码:remove_shortcode('[gallery]');

以上是关于Wordpress 从内容中删除简码的主要内容,如果未能解决你的问题,请参考以下文章

wordpress 移动主题删除简码

WordPress Shortcode(简码)介绍及使用详解

如何在 wordpress 选项中保存简码的内容?

如何从 Wordpress 页面/帖子中获取所有标签作为简码列表?

Wordpress 如何使用简码从 localStorage 获取值

Wordpress 导航栏中的自定义简码