WordPress从内容中删除短代码

vaqhlq81  于 2023-03-17  发布在  WordPress
关注(0)|答案(5)|浏览(193)

是否可以在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);
1dkrff03

1dkrff031#

我知道这是一个比较老的问题,但是strip_shortcodes函数确实可以工作!

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

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

ftf50wuq

ftf50wuq2#

奇怪。remove_shortcode(codex link)没有第二个参数。
您返回的是remove_shortcode函数的true或false返回值,而不是删除了shortcode的内容。
在上面的函数的第二个版本中尝试类似这样的操作:

remove_shortcode('gallery');
return $content;

或者干脆

remove_shortcode('gallery');

在你的functions.php文件中。之前的帖子建议包括[ ],我想这是错误的。

xoefb8l8

xoefb8l83#

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

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

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

update:您可以通过添加代码来注销function.php中的shotcode:

remove_shortcode('[gallery]');
qxsslcnc

qxsslcnc4#

一个老问题,但经过一些挖掘和答案的组合,这对我很有效:

<?php $content = get_the_content();

echo strip_shortcodes($content);?>

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

js5cn81o

js5cn81o5#

我知道这是一个老职位,但以防万一有人正在寻找一种方法来选择性地删除一个单一的短代码或短代码列表中的职位内容(或任何字符串你已经得到)在WordPress中,例如,你不想使用strip_shortcodes删除所有短代码,你只想删除[abc id ='blah']短代码或东西:

$pattern = get_shortcode_regex( [ 'abc', 'shortcode2' ] );
$content = preg_replace_callback( "/$pattern/", 'strip_shortcode_tag', $content );

$content是包含短代码的字符串,你可以在数组中列出一个或多个短代码名称(替换'abc','shortcode 2')。即使你想删除的短代码没有注册,这仍然有效,例如如果以前的插件使用[pluginshortcode],你可以删除它们。

相关问题