停止类别和归档页面中的快捷码剥离

时间:2011-02-15 作者:BigToe

使用Wordpress的默认主题2010 1.1,短代码可以在主博客页面和单个帖子页面上使用,但在类别和归档页面上会被删除。

例如,坚持主题的功能。php:

add_shortcode(\'tsc\', \'tsc_process_shortcode\' );

function tsc_process_shortcode($atts, $content = null) {
return \'INSERTED TEXT \' . $content;
}
类别和归档页面上显示的帖子内容中的[tsc]不会生成插入文本。如何使短代码在类别和归档页面上发挥作用?

2 个回复
最合适的回答,由SO网友:John P Bloch 整理而成

在应用过滤器之前,将从摘录中删除短代码。请尝试以下操作:

function tsc_execute_shortcodes_in_excerpts( $text, $raw_text ){
  if(empty($raw_text)){
    $text = get_the_content(\'\');
    $text = apply_filters(\'the_content\', $text);
    $text = str_replace(\']]>\', \']]>\', $text);
    $text = strip_tags($text);
    $excerpt_length = apply_filters(\'excerpt_length\', 55);
    $excerpt_more = apply_filters(\'excerpt_more\', \' \' . \'[...]\');
    $words = preg_split("/[\\n\\r\\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
    if ( count($words) > $excerpt_length ) {
      array_pop($words);
      $text = implode(\' \', $words);
      $text = $text . $excerpt_more;
    } else {
      $text = implode(\' \', $words);
    }
  }
  return $text;
}

add_filter( \'wp_trim_excerpt\', \'tsc_execute_shortcodes_in_excerpts\', 10, 2 );
基本上是重新运行wp_trim_excerpt() 如果从一开始就对内容进行了修剪(减去短代码剥离)。如果您只想针对您的短代码,您可以在之后执行类似的操作get_the_content(\'\'):

$text = str_replace( \'[tsc\', \'{tsc\', $text );
$text = strip_shortcodes( $text );
$text = str_replace( \'{tsc\', \'[tsc\', $text );
希望这有帮助。

SO网友:Bainternet

假设您使用的是默认的2010,归档和类别循环使用的是\\u摘录而不是\\u内容,这就是为什么没有生成短代码的原因,幸运的是有一个简单的修复方法,只需将这一行添加到主题函数中即可。php文件

add_filter( \'the_excerpt\', \'do_shortcode\', 11 );
希望这有帮助。

结束

相关推荐

Nested Shortcode Detection

如果您熟悉此代码<?php $pattern = get_shortcode_regex(); preg_match(\'/\'.$pattern.\'/s\', $posts[0]->post_content, $matches); if (is_array($matches) && $matches[2] == \'YOURSHORTCODE\') { //shortcode is being used }&#