我正在设置一个新的页面模板,在一个列中显示一个页面的图库(如果有的话),包含在一个独立的div中,浮动到右边,所有其他内容浮动到左边。我可以通过get_post_gallery()回显右边的画廊,现在我想从the_content()中删除画廊。
我基本上希望找到的是一个与strip_shortcodes()完全相同的函数,但是对于特定的短代码。像strip_shortcode('gallery')或strip_shortcode('gallery',content())之类的东西。有没有人为Wordpress写过这样的函数?
remove_shortcode('gallery')工作栏它在运行时将该死的短代码文本留在后面。我可以通过CSS隐藏图库或通过jQuery删除它,但我宁愿它不是首先输出。
答案 0 :(得分:1)
删除短代码或特定的短代码列表,您可以使用此代码。
global $remove_shortcode;
/**
* Strips and Removes shortcode if exists
* @global int $remove_shortcode
* @param type $shortcodes comma seprated string, array of shortcodes
* @return content || excerpt
*/
function dot1_strip_shortcode( $shortcodes ){
global $remove_shortcode;
if(empty($shortcodes)) return;
if(!is_array($shortcodes)){
$shortcodes = explode(',', $shortcodes);
}
foreach( $shortcodes as $shortcode ){
$shortcode = trim($shortcode);
if( shortcode_exists($shortcode) ){
remove_shortcode($shortcode);
}
$remove_shortcode[$shortcode] = 1;
}
add_filter( 'the_excerpt', 'strip_shortcode' );
add_filter( 'the_content', 'strip_shortcode' );
}
function strip_shortcode( $content) {
global $shortcode_tags, $remove_shortcode;
$stack = $shortcode_tags;
$shortcode_tags = $remove_shortcode;
$content = strip_shortcodes($content);
$shortcode_tags = $stack;
return $content;
}
dot1_strip_shortcode( 'Test' );
dot1_strip_shortcode( 'Test, new_shortcode' );
dot1_strip_shortcode( array('Test', 'new_shortcode') );
接受单个逗号分隔的短代码字符串或短代码数组。