包含使用阅读更多内容的帖子内容的自定义页面

时间:2016-01-15 作者:rudtek

我有一个我正在创建的自定义页面的代码,我想拥有自己的博客存档(格式化自定义)

这是我的代码:

<?php                                                     
                    $args = array(
                                    \'posts_per_page\' => \'-1\',
                                    \'post_type\' => \'post\',
                                    \'post_status\' => \'publish\',
                                    \'category__in\' => $quicksand_categories 
                                    );                     
                    $query = new WP_Query( $args );                                             
                    foreach ($query->posts as $item) {                      
                        $categories = wp_get_post_categories($item->ID);
                        ?>
                        <li id="item" class="item" data-id="id-<?php echo $item->ID ?>" data-type="<?php foreach ($categories as $c) { echo $c . \' \';}?>" >
                        <?php  if (get_option(\'featured\') == \'yes\') { ?>
                           <a href="<?php echo get_permalink($item->ID); ?>">                   
                        <?php  echo get_the_post_thumbnail($item->ID);  ?></a>
                        <?php } ?>
                           <br />
                        <?php if(get_option(\'titles\') == \'yes\') { ?>
                            <h2><a href="<?php echo get_permalink($item->ID); ?>">
                        <?php echo get_the_title($item->ID); ?>
                            </a></h2>

                <?php echo apply_filters(\'the_content\', $item->post_content); ?>

                <h6 class="alt-h"><a href="<?php echo get_permalink($item->ID); ?>">READ MORE</a></h6>
                <hr/>
                            <?php } ?>
                        </li>                                          
                    <?php  }  ?>
             </ul>
它似乎工作正常,但它不承认它正在发布的帖子中有“阅读更多”的内容。我只想在阅读更多我的博客帖子之前,而不是在阅读整个帖子之前,这个页面提取信息。

我最初尝试只使用“the\\u content”,但这会提取实际页面本身的内容,而不是帖子的内容。所以我用

<?php echo apply_filters(\'the_content\', $item->post_content); ?>
我可能错过了一些愚蠢的事情,但如果有任何帮助,我将不胜感激。

1 个回复
最合适的回答,由SO网友:Mike 整理而成

实际上,你这样做的方式比必要的方式复杂得多。这个foreach 实际上是过度的。您想做的事情更像这样:

$args = array(
    \'posts_per_page\' => \'-1\',
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'category__in\' => $quicksand_categories 
);                     

$query = new WP_Query( $args );

if ($query -> have_posts() {
    while ($query -> have_posts() {
        $query -> the_post();
        // Do your display stuff here
    }
}
这会将Post对象置于全局$post 变量,因此现在您可以轻松使用以下函数the_title()the_permalink() 打印内容而不将ID值传递给echo 呼叫。

例如:您有:<a href="<?php echo get_permalink($item->ID); ?>">

您现在可以拥有:<a href="<?php the_permalink(); ?>">

或者,代替$item->post_content, 你可以使用the_excerpt();

最终the_excerpt() 是您在本例中要使用的。这里有一个link to the codex entry. 这里还有一些很好的例子,说明了如何根据自己的喜好进行定制(比如包括一个定制的“阅读更多”链接)。