WordPress定制内容和分类档案

时间:2012-01-21 作者:Reuben

好的,我已经设置了一个自定义内容类型:Event

然后,我以分层格式为Event:Type设置了自定义分类法

为了在每个“类型”中显示“事件”帖子,我使用了模板:分类法类型。php

然后,我设置了一个小部件“自定义分类法菜单小部件”,以列出我的一个小部件区域中的“类型”,以及每种类型中的post计数。

我的问题:

单击其中一个,我会看到与该“类型”的“事件”帖子不匹配的页面。(其中一个是“party”类型,显示没有可用的职位,即使我有一些属于该“类型”的职位。

每个类别中的职位的计数都不正确。(相比之下没什么大不了的)

1 个回复
SO网友:Stephen Harris

首先,“未来”状态用于尚未发布的帖子,不应用于标记未来发生的事件。

(我建议将事件的数据存储在post meta中,然后按post meta字段进行查询/排序。请参阅this questionthis question)

其次,在代码中有以下两行:

$args = array( \'post_type\' => \'event\', \'posts_per_page\' => 50, \'post_status\' => \'future\', \'order\' => \'ASC\' );
$loop = new WP_Query( $args );
这些完全覆盖默认WordPress查询,该查询尝试从数据库中查找与分类术语匹配的“已发布”事件。(请记住,“未来”事件/帖子不被视为“已发布”。)

你的$loop query尝试查询数据库中任何尚未发布的“事件”,由于这超过了原始查询,因此它应该为每个分类术语显示相同的内容。

但你看不到这个。。。(有时您会看到没有任何事件)。这是因为有条件:

have_posts();
这是检查原始查询是否有任何帖子(即在这个分类术语中是否有发布的事件)。它没有检查您当前的查询(是否有任何未来事件?)。检查您的$loop 查询:

$loop->have_posts();

How to merge rather than replace the query

因此,在上面我已经说过,您超越了WordPress自动执行的查询(查找该术语的已发布事件)。要在新查询中包含分类术语请求,请使用以下技巧:

将查询的两行替换为:

$args = array( \'post_type\' => \'event\', \'posts_per_page\' => 50, \'post_status\' => \'future\', \'order\' => \'ASC\' );
//Merge with default query
global $wp_query;
$args = array_merge( $wp_query->query,$args);
$loop = new WP_Query( $args );

结束

相关推荐

如何重写URL以通过AJAX将请求传递给定制方法?(我不能使用admin-ajax.php)

我必须构建一个WordPress插件,为AJAX调用提供HTML。但是,由于服务器环境的原因,我不能使用传统的admin-ajax.php.有人告诉我,我可以使用url重写构建自定义页面,例如:/my-ajax-calls/因此,当我向该页面发送请求时,它将是:jQuery.get(\"/my-ajax-calls/param1/param2/\",...); 那我可以用param1 &;param2 并给出相应的HTML。我知道如何构建插件,如何重写URL以将其与生成HTML的方法连接起