我有几种帖子类型。我想获取与该帖子类型关联的所有自定义字段。
示例:
Post
-- image
-- Featured image
-- body
我需要获取数组中的所有字段或自定义字段。我找到了解决办法from here, 但这不符合我的目的: echo \'<pre>\';
print_r(get_post_custom($post_id));
echo \'</pre>\';
我有几种帖子类型。我想获取与该帖子类型关联的所有自定义字段。
示例:
Post
-- image
-- Featured image
-- body
我需要获取数组中的所有字段或自定义字段。我找到了解决办法from here, 但这不符合我的目的: echo \'<pre>\';
print_r(get_post_custom($post_id));
echo \'</pre>\';
在函数中添加以下代码。php
for acf
function get_all_meta($type){
global $wpdb;
$result = $wpdb->get_results($wpdb->prepare(
"SELECT post_id,meta_key,meta_value FROM wp_posts,wp_postmeta WHERE post_type = %s
AND wp_posts.ID = wp_postmeta.post_id", $type
), ARRAY_A);
return $result;
}
function acf(){
$options = array();
$acf = get_all_meta(\'acf\');
foreach($acf as $key => $value){
$options[\'post_type\'][$value[\'post_id\']][\'post_id\'] = $value[\'post_id\'];
$test = substr($value[\'meta_key\'], 0, 6);
if($test === \'field_\'){
$post_types = maybe_unserialize( $value[\'meta_value\'] );
$options[\'post_type\'][$value[\'post_id\']][\'key\'][] = $post_types[\'key\'];
$options[\'post_type\'][$value[\'post_id\']][\'key\'][] = $post_types[\'name\'];
$options[\'post_type\'][$value[\'post_id\']][\'key\'][] = $post_types[\'type\'];
}
if($value[\'meta_key\'] == \'rule\'){
$post_types = maybe_unserialize( $value[\'meta_value\'] );
$options[\'post_type\'][$value[\'post_id\']][\'post_types\'] = $post_types[\'value\'];
}
}
return $options;
}
这将为您提供acf的post meta key的数组值。How to use
foreach(acf() as $key => $value){
update_post_meta(76, $value[\'type\'], \'Steve\');
}
For pods
函数pods(){global$wpdb;//获取pods post type id。 $result = $wpdb->get_results($wpdb->prepare(
"SELECT ID,post_title,post_parent FROM wp_posts WHERE post_type = %s", $type
), ARRAY_A);
// pods each field for a post type create separate post type so again query to get the field post type result.
$pods_field_post_type = array();
foreach($result as $value){
$pods_field_post_type = $wpdb->get_results($wpdb->prepare(
"SELECT ID,post_title,post_name FROM wp_posts WHERE post_type = %s
AND post_parent = %d
", \'_pods_field\',$value["ID"]
), ARRAY_A);
}
$fields = array();
foreach($pods_field_post_type as key => $value):
$podsAPI = new PodsAPI();
$pod = $podsAPI->load_pod( array( \'name\' => \'
post\' ));
$fields[] = $pod[\'fields\'][$value[\'post_name\']][\'type\'];
endforeach;
}
print_r($fields);
How to use
foreach($fields as $key => $value){
update_post_meta(76, $value, \'Steve\');
}
函数acf()和pods()为您提供该post类型的确切元键。如果复制并粘贴代码,则可能无法工作。希望这个答案对你和其他人都有帮助。
让我知道你什么都不麻烦。
get_all_post_type_supports()
function:$post_type_features = get_all_post_type_supports( \'post\' );
print_r( $post_type_features );
/* Array
* (
* [0] => author
* [1] => editor
* [2] => thumbnail
* [3] => excerpt
* [4] => trackbacks
* [5] => custom-fields
* [6] => comments
* [7] => revisions
* [8] => post-formats
* [9] => title
* )
*/
您还可以使用post_type_supports()
查看帖子类型是否支持特定功能。另一种检查post类型特性的方法是获取其post类型对象,只需检查$supports
属性:
$post_type_object = get_post_type_object( \'post\' );
print_r( $post_type_object->supports );
自定义字段自custom fields 是post meta-data 没有直接的方法可以检索特定帖子类型所使用的自定义字段名列表,而是按帖子而不是帖子类型进行关联。相反,您必须自己编译一个数组,方法是遍历所讨论的post类型的每个post,并使用get_metadata( $post_id )
或get_post_custom_keys( $post_id )
检索为该帖子存储的每个自定义字段。这可能是一个very手术费用昂贵,应尽可能少做-如果您考虑每周或每月不止做一次,我强烈建议您寻找其他方法来实现最终目标。
还可以使用自定义SQL查询来确定此信息,并且无疑比为每一篇文章类型查询元数据要有效得多。
这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在