返回空字符串的摘录中的快捷代码

时间:2019-01-20 作者:Phil

我得到了这个密码:

function ntt_movie_shortcode($atts, $content = null)
{
    return \'TEST\';
}
add_shortcode(\'ntt_movie\', \'ntt_movie_shortcode\');
该短代码在单个页面上运行良好,但在主页/摘录中,短代码呈现为空字符串。因此,可以识别短代码,但似乎无法处理该函数。

有什么提示或方法吗?

提前谢谢。

2 个回复
SO网友:Krzysiek Dróżdż

如果您使用的是自动生成的摘录,那么所有短代码都将被删除(https://developer.wordpress.org/reference/functions/the_excerpt/):

自动生成的摘录还将删除所有短代码和标记。它被裁剪为单词边界,默认长度为55个单词。对于用单个字符(或可以用单个字符)描述单词的语言(即东亚语言),单词边界实际上是字符。

这很有意义——你不想在这些摘录中使用任何高级HTML,你也无法控制一个短代码将生成什么输出(它可能是一些基本的东西,但可能是许多复杂的HTML代码……)

SO网友:Phil

在我的例子中,我使用(封闭的)短代码来格式化文本。所以需要的是,短代码不会被删除,因为它会从句子中删除单词。

所以我做了一些修改,找到了这个片段,它有助于去掉短代码,但保留了单词:https://wordpress.stackexchange.com/a/229879/33303

它删除了\\u摘录的默认过滤器,并将其替换为自定义函数。我想这会给我带来更多的问题;),但在这种情况下,它会有所帮助。

function ntt_custom_excerpt($text = \'\') {
    $raw_excerpt = $text;
    if ( \'\' == $text ) {
        $text = get_the_content(\'\');
                // $text = strip_shortcodes( $text );
        $text = do_shortcode( $text );
        $text = apply_filters(\'the_content\', $text);
        $text = str_replace(\']]>\', \']]>\', $text);
        $excerpt_length = apply_filters(\'excerpt_length\', 55);
        $excerpt_more = apply_filters(\'excerpt_more\', \' \' . \'[...]\');
        $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
    }
    return apply_filters(\'wp_trim_excerpt\', $text, $raw_excerpt);
}
remove_filter( \'get_the_excerpt\', \'wp_trim_excerpt\'  );
add_filter( \'get_the_excerpt\', \'ntt_custom_excerpt\'  );

相关推荐

Custom post type shortcode

我创建了一个自定义的帖子类型快捷码作为滑块。我的滑块图像在背景图像中显示为特色图像。但我的幻灯片中没有显示特色图像。这是我的代码:<?php add_shortcode( \'slickslider\', \'slider_shortcodes_post_type\' ); function slider_shortcodes_post_type(){ $args = array( \'post_type\' => \'slid