我有一个我正在创建的自定义页面的代码,我想拥有自己的博客存档(格式化自定义)
这是我的代码:
<?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); ?>
我可能错过了一些愚蠢的事情,但如果有任何帮助,我将不胜感激。
最合适的回答,由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. 这里还有一些很好的例子,说明了如何根据自己的喜好进行定制(比如包括一个定制的“阅读更多”链接)。