Tricky WP Query

时间:2011-10-14 作者:digout

我正在尝试使用wp\\u query(或其他本机Wordpress查询类)执行以下操作:

获取所有帖子,其中(post\\u type=\'post\'和category=7)或(post\\u type=\'case studies\'和meta\\u key=\'homeslide\'和meta\\u value=1)

我不确定他们中是否有人能处理好这件事。

Trying with WP Query:

$args = array (
    \'relation\' => \'OR\',
    array(
        \'meta_key\' => \'_homeslide\', 
        \'meta_value\' => \'1\'
    ),
    array(
        \'category\' => \'7\'
    )
);
但我认为“关系”仅用于tax\\u查询。

我可能可以使用$wpdb创建一个高级查询,但我想看看是否可以和其他人一起完成,看看我是否遗漏了一些明显的东西。

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

好的,我使用get\\u posts&;query\\u posts返回每个:posts和case studies的数组。然后array\\u将它们合并(感谢heads up EAMann),然后使用带有自定义比较函数的uasort()按post\\u日期对它们进行排序。

这并不是最有吸引力的解决方案,但既然它可以工作,而且我最多只能从每个查询返回5篇帖子,那就可以了。

// Collect posts
$news = get_posts(); 
$cs = query_posts( array(
    \'post_type\' => \'case-studies\',
    \'meta_key\' => \'_homeslide\',
    \'meta_value\' => \'true\'
));

// Merge the two arrays
$vslides = array_merge($news, $cs);

// Function to compare array elements using post_date
function compare($x, $y) {
    if ( strtotime($x->post_date) == strtotime($y->post_date) )
        return 0;
    else if ( strtotime($x->post_date) > strtotime($y->post_date) )
        return -1;
    else  
        return 1;
}

// Sort by post_date
uasort($vslides, \'compare\');

SO网友:EAMann

对于这种复杂的查询,我建议运行两个查询,然后合并结果。

首先,获取以下对象的数组:

获取所有帖子,其中(post\\u type=\'post\',category=7)

然后,获取以下对象的数组:

(post\\u类型=\'案例研究\',meta\\u键=\'homeslide\',meta\\u值=1)

然后使用array_merge() 要组合阵列和,您就有了一个满足您需求的集合。是的,您正在执行查询。。。但这似乎是一个相当快速/简单的短期解决方案。

结束

相关推荐

WordPress jQuery淡入淡出效果

我在跟踪a tutorial.我已经包括了悬停。js,代码如下:$(function() { // OPACITY OF BUTTON SET TO 50% $(\".imgopacity\").css(\"opacity\",\"0.5\"); // ON MOUSE OVER $(\".imgopacity\").hover(function () { // SET OPACITY TO 100%