我需要获取分配给帖子类型的所有元键/自定义字段。
我不想post_meta
的值post_meta
分配给特定职位或某一职位类型的所有职位。
但是,我想获取“分配”给帖子类型的所有可能的自定义字段。
我已经看过了,我开始担心这是不可能的,也许post_meta
是否未“注册”,但仅在保存帖子时显示在数据库中?
我想获得一个帖子类型的所有帖子元信息,就像我可以获得分配给一个帖子类型的所有分类法信息一样。
我希望能够做到:
get_post_meta_information_for_post_type($post_type);
然后得到如下结果:
array(\'custom_meta_key_1\', \'custom_meta_key_2);
。。。无论是否存在该职位类型的单个现有职位。
请告诉我这是可能的(以及如何做到:)?
谢谢
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
接受。