在主页特色部分中,我想显示7条最新帖子,这些帖子是标记为标记ID#50的常规帖子或带有post-type sp_events的自定义类型帖子。
这不起作用。大概是因为tag__in过滤掉了未标记的自定义类型帖子。我的php太糟糕了,我无法理解如何纠正这个问题。
query_posts(
array(
'tag__in' => array(50),
'showposts' => '7',
'post_type' => array('post', 'sp_events')
)
);
感谢。
答案 0 :(得分:0)
如果我没有弄错(我当然可能是这样),你就不能像使用Wordpress的内置函数那样进行查询。
你可以做的是你的functions.php文件(其中一个存储主题的自定义函数),它有一个函数,它接受一个参数数组数组并循环遍历它们,每次传递都将返回的帖子添加到数组中。我认为get_posts()将是最好的函数,因为它返回数组中的帖子而不需要循环。
function query_posts_multiple($arrArgs)
{
if (!is_array($arrArgs)) return false; // Prevents warnings and fatal errors.
$posts = array();
foreach ($arrArgs as $args)
{
$posts = array_merge($posts, get_posts($args));
}
return $posts;
}
对于args数组,这是一个例子:
$args = array();
$args[] = array(
'numberposts' => 7,
'tag' => "50",
);
您只需在主题中使用foreach()循环即可。您可以使用$ post-> 列方式访问数据。
$posts = get_posts_multiple($args);
foreach ($posts as $post)
{
// call all the $post->COLUMNs your heart desires
}
unset($posts); // Delete that variable just to be safe.
要限制帖子数量,只需保持计数并在达到某个数字时停止循环。要随机化数组,可以使用shuffle()。
这可能是一种非常非常肮脏的做法,把它归咎于我的极度疲惫......
洛根
答案 1 :(得分:0)
我已经解决了。解决方案很简单:不要试图使过滤器仅应用于“常规”帖子,而是让标签也适用于自定义帖子类型的帖子。我没有意识到标签会分享不同的帖子类型。
我刚刚将以下内容添加到functions.php并标记了自定义帖子类型帖子:
add_action('init', 'add_taxonomy_objects');
function add_taxonomy_objects() {
register_taxonomy_for_object_type('post_tag', 'sp_events');
}'