所以你调用一个自定义操作,比如do_action(\'print_gallery\');
在标题中,现在您希望当触发此操作时,它打印插入帖子内容中任何位置的shorcode的内容。
当然,当你打印时the_content()
您不希望再次打印短代码。
因此,在挂钩的函数中print_gallery
操作您可以插入如下内容:
add_action(\'print_gallery\', \'print_gallery_shortcode\');
function print_gallery_shortcode() {
if ( ! is_single() ) return;
$shortcode_name = \'gallery\';
$content = get_queried_object()->post_content;
if (
preg_match_all( \'/\'. get_shortcode_regex() .\'/s\', $content, $matches )
&& array_key_exists( 2, $matches ) && in_array( $shortcode_name, $matches[2] )
) {
foreach ( $matches[2] as $i => $sc ) {
if ( $sc == $shortcode_name ) {
echo do_shortcode( $matches[0][$i] );
// prevent shortcode is printed again in the post content
add_shortcode($shortcode_name, \'__return_false\');
}
}
}
}
我用过标准的wordpress
[gallery]
shortcode,如果使用自定义的,只需在
$shortcode_name
变量
现在,您可以在内容中的任何位置插入快捷码,并且快捷码输出将打印在您拥有的位置do_action(\'print_gallery\')
而不是在内容中。
(当然,如果函数the_content()
在之前调用do_action(\'print_gallery\')
您将获得一个复制的快捷码:我的函数无法阻止已经发生的事情……)
请注意,函数doesn\'t 干扰在帖子内容中插入的、通常在内容中打印的其他短代码。