我刚从2.9升级到3.4.2(我知道,我知道,但如果它没有坏…)我有一些页面模板,它们被设置为(或至少被设置为)先显示页面内容,然后开始一个帖子循环,如下所示:
<div id="content">
<div class="content-title">ABOUT THE SITE</div>
<div id="content-main">
<img src="<?php bloginfo(\'template_url\'); ?>/images/headline.gif" />
<div class="nopad"><?php the_content(); ?></div>
</div>
<div class="content-title" style="color: #05B2A9;">POSTS BY DATE</div>
<div id="comments">
<?php
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$args= array(
\'cat\' => 8,
\'paged\' => $paged
);
query_posts($args);
?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$key="main img";
$my_main_img = get_post_meta($post->ID, $key, true);
$key="thumb img";
$my_thumb_img = get_post_meta($post->ID, $key, true);
?>
<div <?php post_class() ?>>
<div class="blog-list">
<div class="blog-list-img">
<!-- do stuff -->
</div>
</div>
</div>
<?php endwhile; ?>
<?php else : endif; ?>
<div id="blog-list-more">
<div class="next"><?php previous_posts_link(\' \') ?></div>
<div class="previous"><?php next_posts_link(\' \') ?></div>
</div>
</div>
</div>
这在2.9中运行得很好,但在这次新升级中,它不会显示页面内容。我有多个页面模板,能够在运行简单查询的页面上修复它(如博客贡献者列表),方法是
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
之前
<div id="content">
, 但正如你在博客主归档页面上所想象的那样,这不是一个选项。(我只是想确定一下)。
那么,如何在主循环之外获取页面的内容呢?我必须运行两个循环吗?这似乎是一件很简单的事情,但我不知道怎么做。我不能在这个页面上运行简单的查询,因为里面有各种各样疯狂的东西。或者我可以吗?
SO网友:kaiser
更新主题并不难。但有必要让它与当前版本的内核配合良好。
以下是您可能需要做的一些注意事项:
查询模板发布缩略图(&L);特色图片查询Nowadays, we\'re using get_posts()
or new WP_Query
对于这种情况,除了WordPress的默认查询之外,您还需要执行另一个(手动)查询。
所以你可以打电话:
$wpse69629_query = new WP_Query( array(
\'cat\' => 8
,\'paged\' => get_query_var(\'paged\') ? get_query_var(\'paged\') : 1;
) );
if ( $wpse69629_query->have_posts() )
{
while ( $wpse69629_query->have_posts() )
{
$wpse69629_query->the_post();
// do stuff
}
}
模板层次结构由于有一个查询只从特定类别加载帖子,因此您可以考虑添加另一个仅对此类别触发的模板。这将为您节省额外的查询。
只需将代码(不带查询,但带有默认循环)复制到名为category-8.php
.
帖子缩略图
With (afaik) WP 2.9, post thumbnails/feat.images arrived. 那时候你的主题似乎没有实现这一点。
现在,只需调用the_post_thumbnail()
在列表视图中和()
对于单个视图。
对这一壮举的支持。大小将在php函数中设置,如下所示:
function wpse69629_feat_img_size()
{
add_theme_support( \'post-thumbnails\' );
set_post_thumbnail_size( 50, 50 );
}
add_action( \'after_setup_theme\', \'wpse69629_feat_img_size\' );
然后可以在模板中这样调用它:
<?php the_post_thumbnail(\'thumbnail\', array(\'class\' => \'alignleft\')); ?>