使用WP_QUERY获取自定义元值,Foreach to json对象

时间:2014-09-04 作者:Remy Sheppard

因此,我在wordpress网站上有4个自定义元框,每个帖子都与该客户销售的产品相关。

我有3个下拉框,一个用于分类,两个用于两个自定义元框。我正在处理的元框是adhesion_boxsubstrate_box.

当我查询帖子标题时,我的AJAX脚本工作得很好,但当我试图获取元值时,它不会工作。我正在尝试使用WP_Query 而不是$wpdb. 以下是无法工作的php位:

$cat   = $post[\'cat\'];
$query = new WP_Query( array( \'cat\' => \'$cat\' ) );

if($query->have_posts()){
    $posts = $query->get_posts();
    foreach( $posts as $post ) {
        $return[$post->id] = $post->meta_value;
    }
}
现在,它返回的JSON对象是:

OBJECT: {"":""}
所以我有点迷路了。下面是我朋友编写的一个长的$wpdb查询,它可以按类别获取帖子标题-它工作得很好,但我需要adhesion_box 元值,而不是帖子标题。

$query = $wpdb->get_results(
    "SELECT p.`id`,p.`post_title`
    FROM $wpdb->posts `p`
    JOIN $wpdb->term_relationships `tr` ON (`p`.`ID` = `tr`.`object_id`)
    JOIN $wpdb->term_taxonomy `tt` ON (`tr`.`term_taxonomy_id` = `tt`.`term_taxonomy_id`)
    JOIN $wpdb->terms `t` ON (`tt`.`term_id` = `t`.`term_id`)
    WHERE `p`.`post_type`=\'post\'
    AND `p`.`post_status` = \'publish\'
    AND `tt`.`taxonomy` = \'category\'
    AND `t`.`term_id` = \'$cat\'");
我很难想出如何抓住这个价值,并以最简单的方式实现它。

感谢您的帮助。

Here is the demo, so you can see it.

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

最好的方法是$wpdb. 按类别提取meta\\u值的查询为:

$query = $wpdb->get_results(
    "SELECT p.`ID`, pm.`meta_value` FROM {$wpdb->postmeta} pm
    LEFT JOIN {$wpdb->posts} `p` ON `p`.`ID` = pm.`post_id`
    LEFT JOIN {$wpdb->term_relationships} `tr` ON `p`.`ID` = `tr`.`object_id`
    LEFT JOIN {$wpdb->term_taxonomy} `tt` ON `tr`.`term_taxonomy_id` = `tt`.`term_taxonomy_id`
    WHERE `pm`.`meta_key` = \'adhesion_box\'
    AND `p`.`post_status` = \'publish\'
    AND `p`.`post_type` = \'post\'
    AND `tt`.`taxonomy` = \'category\'
    AND `tt`.`term_id` = $cat
");

结束

相关推荐

使用jQuery和AJAX访问API

作为概念证明,我正在尝试使用jQuery和AJAX访问API,并将结果发布到页面。在完成了一些在线教程并尽最大努力将其整合在一起之后,我有以下几点:功能。php://Fire Customizr require_once( get_template_directory() . \'/inc/init.php\' ); function my_init() { if (!is_admin()) { wp_deregister_script(\'jque