获取分配给POST类型的所有元键

时间:2016-12-16 作者:yolo191919

我需要获取分配给帖子类型的所有元键/自定义字段。

我不想post_meta 的值post_meta 分配给特定职位或某一职位类型的所有职位。

但是,我想获取“分配”给帖子类型的所有可能的自定义字段。

我已经看过了,我开始担心这是不可能的,也许post_meta 是否未“注册”,但仅在保存帖子时显示在数据库中?

我想获得一个帖子类型的所有帖子元信息,就像我可以获得分配给一个帖子类型的所有分类法信息一样。

我希望能够做到:

get_post_meta_information_for_post_type($post_type);
然后得到如下结果:

array(\'custom_meta_key_1\', \'custom_meta_key_2);
。。。无论是否存在该职位类型的单个现有职位。

请告诉我这是可能的(以及如何做到:)?

谢谢

3 个回复
SO网友:Rao Abid

“GarethGillman”的回答肯定有效,但如果我们有数百篇帖子,这是一个昂贵的查询。

下面的函数更便宜,并且使用wp本机函数get_post_custom_keys()

if ( ! function_exists( \'us_get_meta_keys_for_post_type\' ) ) :

    function us_get_meta_keys_for_post_type( $post_type, $sample_size = 5 ) {

        $meta_keys = array();
        $posts     = get_posts( array( \'post_type\' => $post_type, \'limit\' => $sample_size ) );


        foreach ( $posts as $post ) {
            $post_meta_keys = get_post_custom_keys( $post->ID );
            $meta_keys      = array_merge( $meta_keys, $post_meta_keys );
        }

        // Use array_unique to remove duplicate meta_keys that we received from all posts
        // Use array_values to reset the index of the array
        return array_values( array_unique( $meta_keys ) );

    }

endif;
您可以使用$sample\\u size参数在循环中包含更多帖子。

希望它能帮助别人。

SO网友:Gareth Gillman

查询帖子类型中的所有帖子,然后从帖子中获取元键,例如。

Not tested, may need some amendments

$meta_fields = array();
$the_query = new WP_Query( \'post_type=posttype\' );
if ( $the_query->have_posts() ) {
 while ( $the_query->have_posts() ) {
  $the_query->the_post();

  $meta_array = get_post_meta( get_the_ID() );
  foreach( $meta_array as $meta) {
   $meta_fields = $meta[];

  } 
 }
 wp_reset_postdata();
}
然后可以使用$meta\\u fields变量执行任何操作

SO网友:goldenrules

我相信get_registered_meta_keys 会成功的。像这样调用它,get_registered_meta_keys( \'post\', $post_type ), 它将返回所有元键的关联数组,并由数据定义它们。你可以打电话array_keys( get_registered_meta_keys( \'post\', $post_type ) ) 如果你只是想要钥匙。

我认为这是正确的,因为register_post_meta 表明它只是定义了\'object_subtype\' 键,然后委托register_meta( \'post\', $meta_key, $args ). 这个$object_type arg和object_subtype 中使用的密钥register_meta 似乎完全符合get_registered_meta_keys 接受。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在