我对WordPress很陌生,但花了大约50个小时的时间研究它,尝试了一些事情,感觉我现在对它有了很好的处理......
然而,我根本无法工作的一件事就是让一个页面吐出某个类别的帖子列表。
以下是我的示例:http://dev.jannisgundermann.com/zoeikin/graphic-design/typographic-posters
我有一个帖子,如果我直接使用它可以正常工作,但不会显示在此页面上。
类别ID为“3”,而类别名称为“印刷海报”。
我有一个印刷海报页面的自定义页面模板,如下所示:
<?php
/*
Template Name: Typographic Posters
*/
?>
<?php get_header(); ?>
<?php get_sidebar(); ?>
<?php if (in_category('3')): ?>
<div class="post">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<div class="post-description">
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
<?=get_image('flutter-image');?>
</div>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
</div>
<?php endif; ?>
<?php get_footer(); ?>
使用此代码,但只显示页面获取标题,侧边栏和其他内容..
如果有人可以帮助我,那将真正帮助我处理对wordpress类别的过滤。
感谢阅读,
Jannis
答案 0 :(得分:11)
in_category
只能在单个页面的循环外工作。我建议使用query_posts
函数来解决这个问题。您可以使用query_posts('cat=3')
或query_posts('category_name=typographic-posters')
来获取您要查找的帖子。
获得后,只需使用普通的WordPress循环即可访问这些帖子。
答案 1 :(得分:1)
最简单的方法是创建一个名为category-3.php
的文件,并使用普通index.php
或category.php
文件中的标准代码。 Wordpress将负责仅从id = 3及其子类别的类别中提取帖子。
答案 2 :(得分:1)
in_category只能在单个页面上的循环外工作。一世 建议使用query_posts函数来解决这个问题。你可以 使用query_posts('cat = 3')或 query_posts('category_name = typographic-posters')来获取你的帖子 正在寻找。
获得后,只需使用普通的WordPress循环即可访问这些内容 讯息。
这非常有效,但请确保您进入设置&gt;阅读并将帖子页面设置为 - 选择 - 选项,否则它将覆盖此查询并转储所有最近的帖子,无论其类别如何。
答案 3 :(得分:1)
我已使用以下方法按类别ID过滤了帖子:
query_posts('cat=1&showposts=3');
if (have_posts()) : while (have_posts()) :
// if(1) {
//echo the_category_ID();
the_post();
/**
* The default post formatting from the post.php template file will be used.
* If you want to customize the post formatting for your homepage:
*
* - Create a new file: post-homepage.php
* - Copy/Paste the content of post.php to post-homepage.php
* - Edit and customize the post-homepage.php file for your needs.
*
* Learn more about the get_template_part() function: http://codex.wordpress.org/Function_Reference/get_template_part
*/
$is_post_wrap++;
if($is_post_wrap == '1') {
?><div class="post-wrap clearfix"><?php
}
get_template_part('post', 'homepage');
if($is_post_wrap == '3') {
$is_post_wrap = 0;
?></div><?php
}
endwhile;
else :
get_template_part('post', 'noresults');
endif;
答案 4 :(得分:0)
只需在循环之前添加:
<?php query_posts="cat=3&showposts=5">
这会强制循环显示3类(cat = 3)中的5个帖子(showposts = 5)。
答案 5 :(得分:0)
我会提出第二个Eimantas的建议。 Template Hierarchy将使用category-3.php来显示该类别中的帖子。通常,您只需将主题的index.php或category.php复制到category-3.php,然后针对您需要的任何自定义调整该模板。此外,类别模板将更好地支持帖子的分页。
但是如果您需要坚持使用页面来显示这些帖子,请参阅Page of Posts example.
答案 6 :(得分:0)
http://codex.wordpress.org/Template_Tags/query_posts
只是让你知道这些答案来自哪里......你可以用query_posts做更多有趣的功能。
答案 7 :(得分:0)
如果您希望能够在不通过代码的情况下更改显示的类别,此插件也可以帮助您: http://wordpress.org/extend/plugins/advanced-category-excluder/
答案 8 :(得分:-1)
感谢您分享您的想法,这是一个伟大的想法。通常,您只需将主题的index.php或category.php复制到category-3.php,然后针对您需要的任何自定义调整该模板