插入短码就是空白摘录--有什么想法吗?

时间:2013-03-21 作者:Jimbo

我在我的帖子内容周围加了一个短代码,我注意到它使归档页面上的摘录变为空白,而不是从\\u内容/帖子自动生成一个。不知是什么原因造成的,也不知该怎么办。它甚至没有在the_excerpt 它只是一片空白。我会想,如果有问题的话,应该是出现在the_excerpt 但这只是一个空白的句号。我预定义的所有短代码所做的就是围绕内容包装一些复杂的HTML5标记,在某些情况下,为了保持一致性,作者会经常出错,因此它不是一个复杂的短代码。我的帖子输出完美the_content. 一旦我删除了短代码,它就会再次工作。如果我把短代码放回去,并设置一个手动摘录,它就会工作,所以只有当它必须自动生成the_excerpt 来自一篇用这个短代码包装的帖子。如果其他人有过类似的经历,我很难解释或解决,请欣赏任何想法。

非常感谢。

在简单/精简的术语中,im包装例如:

add_shortcode( \'ARTICLE_SECTION\', \'trg_shortcode_article_section\');
function trg_shortcode_article_section_run( $content ) {
  global $shortcode_tags;

  // Backup current registered shortcodes and clear them all out
  $orig_shortcode_tags = $shortcode_tags;
  remove_all_shortcodes();

  add_shortcode( \'ARTICLE_SECTION\', \'trg_shortcode_article_section\' );

  // Do the shortcode (only the one above is registered)
  $content = do_shortcode( $content );

  // Put the original shortcodes back
  $shortcode_tags = $orig_shortcode_tags;

  return $content;
}
// actual shortcode function
function trg_shortcode_article_section( $atts, $content = null ) {

    $atts = array();

    $output = \'<section>\';
    $output .= $content . \'</section>\';
    return $output;
}
add_filter( \'the_content\', \'trg_shortcode_article_section_run\', 7 );
在部分循环中:

<p><?=trg_excerpt_article()?></p>
我一开始就投入了调试工作,而不是做其他事情,只是:

function trg_excerpt_article(){
  echo \'<!-- excerpt - \' . get_the_excerpt() . \' -->\';
}
这也会返回空白。

3 个回复
SO网友:vancoder

摘录删除所有标记和短代码。尝试将以下内容添加到函数中。php:

add_filter(\'the_excerpt\', \'do_shortcode\');
这将再次启用摘录中的短代码。请记住,生成的HTML5将被剥离。

SO网友:Jimbo

我已经设法解决了这个问题。Wordpress strip\\u shortcodes()没有剪切它。

在我看来,Wordpress似乎不喜欢整个帖子都用短代码包装,并将摘录返回空白。也可能是我将短代码应用于\\u内容的更改时间。然而,我相信是前者在网上读到了其他一些人的经历。对于摘录,我在检测空摘录时手动去除了短代码。

function my_custom_excerpt($length_callback=\'\', $more_callback=\'\') {

        if(function_exists($more_callback)){
            add_filter(\'excerpt_more\', $more_callback);
        }

        if(function_exists($length_callback)){
            add_filter(\'excerpt_length\', $length_callback);
        }

        $output = get_the_excerpt();

        if( empty( $output ) ){ 
            $excerpt = get_the_content();
            $excerpt = preg_replace(\'/\\[(.*)\\]/\',\'\',$excerpt);
            $excerpt = esc_attr( strip_tags( stripslashes( $excerpt ) ) );
            $excerpt = wp_trim_words( $excerpt, ( (function_exists($length_callback)) ? call_user_func($length_callback,55) : 55 ), ( (function_exists($more_callback)) ? call_user_func($more_callback) : \'\' ) );

            $output = $excerpt;
        }

        $output = apply_filters(\'wptexturize\', $output);
        $output = apply_filters(\'convert_chars\', $output);
        return $output;
}
目前还不确定这是否是百分之百的万无一失,但当一篇文章被包装在短代码中并返回空代码,然后继续获取\\u内容本身,将所有短代码剥离出来,并按照应该的格式对摘录进行格式化时,这似乎可以处理。希望这能帮助其他遇到类似问题的人。

谢谢你的帮助和建议。

SO网友:Fabian Mossberg

如果希望摘录与帖子运行相同的过滤器,可以将其添加到functions.php.

add_filter( \'get_the_excerpt\', \'get_the_content\', 5 );
请记住,当涉及到任何限制摘录字数的设置时,您的短代码可能会被视为一个单词。因此,如果您的快捷码打印出10个单词,并且您的设置设置为12个单词,那么实际上不会打印出21个单词(原始单词的9个和您的快捷码打印出的12个单词)。

结束

相关推荐

Clearfix Shortcode

我的一位客户在WordPress网站的页面上放置图像时遇到了问题。页面将有一个图像(左对齐),右侧有一些文本,然后是另一个图像,右侧有一些文本,等等。不幸的是,当文本比其图像短时,下面的图像将放置在第一个图像的右侧,这使得布局非常混乱。她使用的是可视化编辑器,文本编辑器有困难,所以添加class=\"clearfix\" (参考通常的after: clearfix黑客入侵styles.css) 直到最后一段,接下来的图像对她来说是行不通的。因此,为了方便我的客户,我承诺添加一个clearfix快捷码。(请