在没有转义标记的情况下在WordPress中显示完整的内容

时间:2014-07-04 17:29:46

标签: php html wordpress

我想在主页面显示限制WordPress的最新帖子。我正在使用WordPress API和函数来显示,但在此之后get_the_content()删除并转义所有已刻录的标签,并且我的帖子无法正确显示,例如编辑器标签。

此函数转义HTML标记:

        <ul style="list-style: none;margin:5px" class="latest-posts">
            <!-- LOOP START -->
            <?php $the_query = new WP_Query( 'showposts=3' ); ?>
            <?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>
                <!-- THIS DISPLAYS THE POST THUMBNAIL, The array allows the image to has a custom size but is always kept proportional -->
                <li> <?php the_post_thumbnail( array(100,100) );?></li>
                <!-- THIS DISPLAYS THE POST TITLE AS A LINK TO THE MAIN POST -->
                <li>
                    <a href="<?php the_permalink() ?>">
                        <?php the_title(); ?>
                    </a>
                </li>
                <!-- THIS DISPLAYS THE EXCERPT OF THE POST -->
                <li>
                    <?php echo mb_substr(get_the_content(), 0, 1200).'&nbsp;...'; ?>
                </li>
                <!-- READ MORE LINK -->
                <li><a href="<?php the_permalink() ?>">more ...</a></li>
            <?php endwhile;?>
            <!-- LOOP FINNISH -->
        </ul>

1 个答案:

答案 0 :(得分:0)

如何输出帖子内容的摘录基本上有三种可能性。

  • 使用the excerpt()函数,在帖子编辑器中输出摘录字段的内容,如果未填充,则会显示帖子内容的前55个字(使用excerpt_length过滤器控制摘录的长度。

  • 要使用<!--more-->快捷标签,the_content()标记只会显示<!--more-->快捷标签的摘录。该快速标签不适用于单页模板。

  • 手动从帖子内容中删除HTML并显示自定义摘录。一种方法是使用wp_filter_nohtml_kses()函数:

    echo mb_substr( wp_filter_nohtml_kses( get_the_content() ), 0, 1200 );
    

上述所有方法都会从帖子内容中删除HTML。要在摘录中包含HTML,请在帖子编辑器中使用摘录字段,WordPress将保留您在帖子编辑器中包含的HTML。还有一些像Advanced Excerpt这样的插件会从内容中创建摘录并保留html,但我不相信有这样做的防弹方法。