将自定义图库快捷代码替换为默认图库快捷代码

时间:2016-03-18 作者:KKranzo

我想用默认的Wordpress短代码(在预获取帖子中)替换帖子内容中的自定义库短代码。我只会在需要以默认的gallery快捷码格式进行格式化的特定情况下执行此操作(以便导出到Apple News)。

如何在内容中搜索自定义库快捷码:

[showgallery id="1234"]
然后将其替换为默认值:

[gallery ids="1234,1235,1236,1237,1238"]
我可以通过创建一个自定义函数来处理从一个id到多个id的更改,该函数将只获取一个id,获取该帖子,获取该帖子中的图像数组(我使用ACF库),然后返回id列表。

因此,我只需要知道如何搜索内容,找到每个showGallery短代码,然后为每个短代码获取id,将其发送到我的自定义函数,删除旧的短代码,然后用我的函数返回的新短代码替换它。

我发现这似乎很接近,但仍然不能完全弄清楚如何删除旧的,等等。

Extract attribute values from every shortcode in post

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

或者将regex过滤器作为the_content 滤器

add_filter(\'the_content\', \'my_regex_filter\', 1); // Execute as early as possible

function my_regex_filter($content) {
    $regex = get_shortcode_regex(array(\'showgallery\'));
    $content = preg_replace(\'/\'.$regex.\'/s\', \'[$1gallery$3$4$5$6]\', $content );
    return $content;
}
或者重写add_shortcode 作用

remove_shortcode(\'showgallery\');
add_shortcode(\'showgallery\', \'my_showgallery\');

function my_showgallery($args) {
    return gallery_shortcode($args);
}
我推荐第二种,因为它更干净更快。

Edit:

重写外部插件的短代码

在您的functions.php 定义plugin version 您的短代码:

remove_shortcode(\'showgallery\');
add_shortcode(\'showgallery\', \'my_showgallery\');

function my_showgallery($args) {
    return gallery_shortcode($args);
}

function my_template_gallery($args) {
    // Here put your custom gallery code…
}
添加到您的header.php 以下两行:

remove_shortcode(\'showgallery\');
add_shortcode(\'showgallery\', \'my_template_gallery\');
现在,除了模板上,到处都有渲染的WP短代码。

相关推荐

SHORTCODE_ATTS()中的$ATTS参数是什么?

这个WordPress developers reference page for shortcode_atts() 国家:$atts(array)(必选)用户在shortcode标记中定义的属性。但我不理解这个定义。例如,在WP Frontend Profile 插件:$atts = shortcode_atts( [ \'role\' => \'\', ], $atts ); 据我所知,shortcode\