我想“覆盖”默认的“画廊”短代码(WordPress),但前提是我已对画廊短代码使用了给定参数。
例如:
[gallery ids="1,2,3"]
它没有参数,因此它将输出标准的画廊代码。
[gallery mode="custom" ids="1,2,3"]
它具有我的“ mode”参数,因此它将输出另一个简码。
要实现此目的,我在functions.php文件中创建了一个“画廊”简码:
function get_new_gallery( $atts ) {
extract( shortcode_atts( array(
'mode' => '',
'ids' => '',
), $atts ) );
$code ="";
if ($mode == "custom") {
//* Output custom shortcode
$code = '[custom_gallery ids="' . $ids . '"]';
} else {
//* Need to do nothing...but don't know how to do it
$code = '[gallery ids="' . $ids . '"]'; /* Here's the problem, it causes a loop */
}
return do_shortcode($code);
}
add_shortcode( 'gallery', 'get_new_gallery' );
当我使用mode =“ custom”参数时,它工作正常。它只是输出新的简码:[custom_gallery ...]
但是,当不使用参数时,它会因为进入无限循环而中断。在代码中,带有注释的行将其中断。
如果没有输入参数,我要执行标准的“画廊”短代码。但是鉴于我已经覆盖了它……不知道如何从循环中“逃脱”而只是执行图库。
有帮助吗?
谢谢。
答案 0 :(得分:0)
也许其他方法可以帮助您?画廊短代码上的过滤器呢?请参阅参考资料: https://codex.wordpress.org/Plugin_API/Filter_Reference/post_gallery
和:
https://wpbeaches.com/filtering-gallery-image-output-wordpress/