有没有一种方法可以获取帖子类型中的所有已注册元字段?

时间:2019-01-03 00:11:56

标签: php wordpress

我正在创建一个动态表单,用户可以选择一个帖子类型并显示在该所选帖子类型上注册的所有元字段,有没有办法获取帖子类型中的所有元字段?

1 个答案:

答案 0 :(得分:0)

您将使用自定义sql查询来获取这些元键/字段。

使用此功能,您将可以排除/包括空的meta_keys和隐藏的meta_keys。

function get_all_meta_keys($post_type = 'post', $exclude_empty = false, 
    $exclude_hidden = false){
    global $wpdb;
    $query = "
        SELECT DISTINCT($wpdb->postmeta.meta_key) 
        FROM $wpdb->posts 
        LEFT JOIN $wpdb->postmeta 
        ON $wpdb->posts.ID = $wpdb->postmeta.post_id 
        WHERE $wpdb->posts.post_type = '%s'
    ";
    if($exclude_empty) 
        $query .= " AND $wpdb->postmeta.meta_key != ''";
    if($exclude_hidden) 
        $query .= " AND $wpdb->postmeta.meta_key NOT RegExp '(^[_0-9].+$)' ";

    $meta_keys = $wpdb->get_col($wpdb->prepare($query, $post_type));

    return $meta_keys;
}