【问题标题】:Select wordpress posts in a category and group by all other categories?选择一个类别中的 wordpress 帖子并按所有其他类别分组?
【发布时间】:2012-11-25 02:37:14
【问题描述】:

我看到的所有代码示例都涉及父类别和子猫。但是,我所拥有的是这样的类别(简化):

-Towns
--NY
--Chicago
--LA
-Restaurants
-Theatres
-Stores

现在,我为芝加哥创建了一个页面。我想在上面显示与芝加哥匹配的所有其他项目:

-Restaurants
--restaurant 1
--restaurant 2
--restaurant 3
-Stores
--store 1
--store 2
etc

我该怎么做?在模板中,我想我必须从当前页面的 URL 中获取 slug 并首先查询该类别(芝加哥),然后循环其他类别,但我不完全确定如何。

编辑:我也需要反过来做,显示按城市分组的国家/地区的所有餐馆。

【问题讨论】:

  • 使用标签是否更有意义?所有餐厅都将被标记为城市类别。
  • 也许,但我还需要按城市分组的餐厅类别存档页面。如果我想出一个,我希望我能做到。
  • 我很确定你可以在标签模板页面上做到这一点 - 我只是不确定如何:)
  • 尝试使用自定义字段,这更容易。例如,一个自定义字段可以是城市。另一个可能是业务类型(餐厅、商店等)。

标签: php wordpress-theming categories wordpress


【解决方案1】:

您可以尝试另一种方法。 创建自定义帖子类型:餐馆、商店等。示例:

add_action( 'init', 'create_post_type' );
function create_post_type() {
    register_post_type( 'restaurants',
        array(
            'labels' => array(
                'name' => __( 'Restaurants' ),
                'singular_name' => __( 'Restaurants' )
            ),
        'public' => true,
        'has_archive' => true,
        )
    );
}

然后您为芝加哥创建一个页面,为餐厅 1、餐厅 2、餐厅 1 类型的餐厅创建条目,并将所有这些条目分配给芝加哥类别。

现在在芝加哥的模板中,您可以显示分配给芝加哥类别的餐厅类型的所有条目。

//add this after the Loop

query_posts( array(
    'post_type' => 'restaurants',
    'category_name' => 'chicago', //use category slug
    'posts_per_page' => -1,
    'post_status' => 'publish',
) );

// The Loop
while ( have_posts() ) : the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Query
wp_reset_query();

您也可以使用cat 参数代替category_name 参数,它采用类别ID。

【讨论】:

  • 是的,但这仍然不能解决在芝加哥页面上将它们全部分组的问题:餐馆、商店、剧院等。另外,我需要做相反的事情,转到餐馆页面并按城市显示所有餐厅。
  • 也许我不明白你的目的,但你可以调用芝加哥页面模板query_posts 函数来处理每个自定义帖子类型(餐厅、商店等)。您将获得包含此类帖子的列表。在餐厅页面模板上,您可以使用相同的代码获取所有餐厅。
猜你喜欢
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多