基本上我需要从Wordpress内容中删除图库短代码,我正在使用
echo preg_replace('/\[gallery ids=[^\]]+\]/', '', get_the_content() );
它正在成功删除图库短代码,还有我需要保留的段落标记。我的想法是,我希望输出除画廊之外的所有内容。
答案 0 :(得分:3)
您可以使用Wordpress strip_shortcode function。
查看食典委的例子。 您可以创建一个删除短代码的过滤器:
function remove_shortcode_from($content) {
$content = strip_shortcodes( $content );
return $content;
}
并在您需要时(在您的模板中)调用它:
add_filter('the_content', 'remove_shortcode_from');
the_content();
remove_filter('the_content', 'remove_shortcode_from')
编辑1
另一种获取方式(并回答您的评论),您可以在删除不受欢迎的短代码后在内容中使用Wordpress apply_filters function。
//within loop
$content = get_the_content();
$content = preg_replace('/\[gallery ids=[^\]]+\]/', '', $content );
$content = apply_filters('the_content', $content );
echo $content;
但我不建议你这样做。我认为强制您的网站修改帖子的内容可能会让人难以理解。也许你应该使用Wordpress Excerpt并避免任何问题。
答案 1 :(得分:0)
删除短代码或特定的短代码列表,您可以使用此代码。
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( 'gallery' );
接受单个逗号分隔的短代码字符串或短代码数组。