首页上带有子类别帖子的类别

时间:2015-08-15 作者:Presian Nedyalkov

我正在开发我的第一个WordPress网站,我正在使用Customizr 主题我需要建立一个首页,显示来自两个类别的最新帖子-新闻和事件及其所有子类别。因此,我的类别树如下所示:

文章

-新闻

--第一个新闻子类别

--第二新闻子类别

-事件

--第一个事件子类别

--第二个事件子类别

我想在头版显示类别新闻和类别事件,并将其子类别中的所有帖子打包在2个容器中,分别包含标题新闻和事件。我对WordPress完全是个新手,我已经搜索了好几天的解决方案,但我想我用的关键词是错误的,因为我没有找到我需要的。我已经创建了一个子主题,目前正在尝试制作索引。用php实现的循环。我还试着制作一个使用不同模板的静态首页。

那么,哪种方法是正确的呢?你能至少给我一些建议吗?非常感谢。

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

通常,您会使用pre\\u get\\u posts过滤器进行此操作,但对于您的特定情况,由于您可能希望自定义帖子的显示方式(单独),我建议设置静态首页,并在使用get_posts(但这也意味着你的主题的“博客”模板不会被使用。)

例如:。

add_shortcode(\'custom_news_and_events\',\'my_custom_news_and_events\');

function my_custom_news_and_events() {
    $news = get_posts(array(\'category\'=>\'1\',\'posts_per_page\'=>\'7\'));
    $childnews1 = get_posts(array(\'category\'=>\'2\',\'posts_per_page\'=>\'3\'));
    $childnews2 = get_posts(array(\'category\'=>\'3\',\'posts_per_page\'=>\'3\'));
    $events = get_posts(array(\'category\'=>\'4\',\'posts_per_page\'=>\'7\'));
    $childevents1 = get_posts(array(\'category\'=>\'5\',\'posts_per_page\'=>\'3\'));
    $childevents2 = get_posts(array(\'category\'=>\'6\',\'posts_per_page\'=>\'3\'));

    $output = \'<div id="frontpagenews">\';
    $output .= \'<h3>News</h3>\';
    if (count($childnews1) > 0)) {foreach $news as $post) {
        $output .= custom_post_display($post);
    } }
    $output .= \'<h4>Child News 1</h4>\';
    if (count($childnews1) > 0)) {foreach $childnews1 as $post) {
        $output .= custom_post_display($post);
    } }
    $output .= \'<h4>Child News 2</h4>\';
    if (count($childnews2) > 0)) {foreach $childnews2 as $post) {
        $output .= custom_post_display($post);
    } }
    $output .= \'</div>\';

    $output = \'<div id="frontpageevents">\';
    $output .= \'<h3>Events</h3>\';
    if (count($events) > 0)) {foreach $events as $post) {
        $output .= custom_post_display($post);
    } }
    $output .= \'<h4>Child Events 1</h4>\';
    if (count($childevents1) > 0)) {foreach $childevents1 as $post) {
        $output .= custom_post_display($post);
    } }
    $output .= \'<h4>Child Events 2</h4>\';
    if (count($childevents2) > 0)) {foreach $childevents2 as $post) {
        $output .= custom_post_display($post);
    } }
    $output .= \'</div>\';
    return $output;
}
(当然,为每个get\\U帖子设置正确的类别ID。)posts\\u per\\u页面设置使您可以更细粒度地控制从每个类别中获取的帖子数量,但您当然可以传递更多参数来获取\\u帖子(请参阅codex页面)

。。。这是在每个显示循环中调用的示例函数:

function custom_post_display($post) {
    $display = \'<div class="postitem">\';
    $display .= \'<h5><a href=".get_permalink($post->ID).">\';
    $display .= $post->post_title.\'</a></h5>\';
    $display .= \'<p>\'.$post->post_excerpt.\'</p>\';
    $display .= \'</div>\';
    return $display;
}
。。。或显示从WP_Post 对象

现在就这些了,在静态页面上使用快捷代码[自定义新闻和事件]。

然后可以设置#frontpagenews和#frontpageevents div和的样式。职位类别等

如果您不需要子类别副标题,可以删除它们并替换get\\u post调用,只需执行以下操作:

$news = get_posts(array(\'category\'=>\'1,2,3\',\'posts_per_page\'=>\'10\'));
$events = get_posts(array(\'category\'=>\'4,5,6\',\'posts_per_page\'=>\'10\'));
然后将从主类别和子类别中获取最新的10篇文章(因为orderby参数的默认值是date)

结束

相关推荐

在FrontPage和归档页面上发布一篇帖子

我正在开发一个使用下划线起始主题的主题,我希望有一个只有最后一篇文章和分页的frontpage,然后有一个单独的页面,带有“归档”slug,以显示所有分页的文章。是否可以通过编程方式(在functions.php文件中添加过滤器和操作)执行此操作,而无需创建额外的模板?提前感谢UPDATE:@ialocin回答frontpage 我的部分问题。这就是我为archives 我的部分问题:function rewrite_init() { add_rewrite_rule(\'archive