将META_QUERY值赋给php变量

时间:2020-05-13 作者:JoaMika

我正在使用此代码进行meta\\u查询

  $values = shortcode_atts( array(\'category\'  => \'Test\',), $atts );
   $args = array(
    \'post_type\' => \'mytype\',
    \'post_status\' => \'publish\',
    \'meta_query\' => array(
        array(
          \'key\'     => \'br_type\',
          \'value\'   => esc_attr($values[\'category\']),
          \'compare\' => \'=\'
        ),
    ),
  );
   $query = new WP_Query( $args );
我如何分配br_type 到php变量?

3 个回复
SO网友:Bob

很抱歉,如果我很笨,但您的查询说br\\u type必须等于esc_attr($values[\'category\']) 因此,要将其放入变量中,您只需:

$br_type = esc_attr($values[\'category\']);
或者,如果您想从$查询中获得它,您可以查看此处提到的一个位置:

How do I get a meta value from WP_Query?

SO网友:rank

在$args数组中,您正在定义要使用WP\\u查询显示的内容。您正在将新查询保存到$query变量中。

因此,现在您可以循环浏览符合定义参数的帖子:

<?php

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
    echo \'<ul>\';
    while ( $query->have_posts() ) {
        $query->the_post();
        echo \'<li>\' . get_the_title() . \'</li>\';
    }
    echo \'</ul>\';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
如果要保存“br\\u type”的值,则需要一个数组,因为每个帖子都有一个该元字段的值。

您可以创建一个空数组和一个计数器变量,并在帖子中循环。在每个循环中,您都在索引位置保存数组中元字段的值。

$br_type_values = []; // empty array
$counter = 0; // counter variable for array

// The Loop
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        $your_post = get_the_ID();
        $br_type_values[$counter] = get_post_meta( $your_post , \'br_type\', true );
        $counter++;
    }
} else {
    // no posts found
}
这样,php变量中就有了所有“br\\u type”的值。

SO网友:jxxe

我不是百分之百确定你的意思,但你可以循环浏览这些帖子并添加br_type 数组的元值:

// your query code here

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        $br_type[] = get_post_meta(get_the_ID(), \'br_type\');
    }
}

wp_reset_postdata();
然后$br_type 应该是一个数组,其中包含br_type 从您的帖子。