如何查找要调用的元值

时间:2013-12-18 作者:localhost

在编写自定义查询时,这件事让我非常困惑wp_query 我们传递了多个参数。但我使用的是woocommerce,我在某个表单上找到了查询的这一部分

$args = array(  
\'post_type\' => \'product\',  
\'meta_key\' => \'_featured\',  
\'meta_value\' => \'yes\',  
\'posts_per_page\' => 10  
我的问题是,如何发现meta_key, 我要查看数据库吗?还是后端?假设我想了解一个产品的信息,让我们说出一件衬衫的克数或颜色。我该如何以及在哪里寻找它,并将其传递meta_key? 我要查看数据库还是在哪里?在我得到meta\\u键之后,我如何在循环中显示它,就像我们说的那样the_title()

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

在编辑后屏幕上,您可以看到»自定义字段«元框,看起来有点像所示here. 您可能需要通过screen options. 这样,您可以看到已编辑帖子的元数据,但不会显示带下划线的元数据,因为它是hidden. 要使隐藏的元在开发过程中可见,请将其放入functions.php:

    function unprotected_meta( $protected, $meta_key ) {
        $protected = ( \'-\' == $meta_key[0] );
        return $protected;
    }
    add_filter( \'is_protected_meta\', \'unprotected_meta\', 10, 2 );
对于可以用来获取所有post meta的函数,有get_post_custom(), 哪一个

返回包含特定帖子或页面的所有自定义字段的多维数组。

只需使用钥匙get_post_custom_keys() 对于价值观get_post_custom_values() 可获得的




Edit: 回应评论

如果您想查询分类法,您应该查看

在谈论归档时,您可能想看看模板

因为你可以有一个用于分类。

woocommerce将产品属性保存为分类法,从而在分类法名称前面加上pa_, e、 g。pa_room-size. 如果要获取产品的属性,可以通过post meta:

$product_attributes_pm = get_post_meta( get_the_ID(), \'_product_attributes\' );
echo \'<pre>\';
print_r($product_attributes_pm);
echo \'</pre>\';
或者使用woocommerce函数get\\u attributes():

global $product;
$product_attributes_wcf = $product->get_attributes();
echo \'<pre>\';
print_r($product_attributes_wcf);
echo \'</pre>\';
或者,您可以直接从$product对象获取信息:

global $product;
$product_attributes_obj = maybe_unserialize( array_shift( $product->product_custom_fields[\'_product_attributes\'] ) );
echo \'<pre>\';
print_r($product_attributes_obj);
echo \'</pre>\';
希望这对您有所帮助,并让您对如何处理您的案件有更深入的了解。

SO网友:user3116385

Use this

$args = array(  
\'post_type\' => \'product\', 
\'posts_per_page\' => 10 
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : 
  setup_postdata( $post ); ?>
  $custom_fields = get_post_custom($post->ID);
  $my_custom_field = $custom_fields[\'_featured\'];
  foreach ( $my_custom_field as $key => $value ) {
    echo $key . " => " . $value . "<br />";
  }
endforeach;
wp_reset_postdata();
结束

相关推荐

Get 1 more post in loop

例如,在简单循环中:$loop = new wp_query(array(\'posts_per_page\' => 3)); while($loop->have_posts()) : $loop->the_post(); if(get_post_meta($post->ID, \'skip_me\', true) == true){ // do something to ask for one more post, &#x