web-dev-qa-db-ja.com

投稿IDなしでget_post_metaを取得する方法

すべてのposts-metaを取得したいのですが、keyをベースにしています。たとえば、post-metaを取得するための主なクエリは次のとおりです。

 <?php $meta_values = get_post_meta($post_id, $key, $single); ?> 

今私はkeyのみに基づいてこのpost-metaを取得したいです。ポストメタを取得するための私の現在のクエリは

<?php echo get_post_meta($post->ID, 'custom_tags'.$userID, true); ?>

そして、私はこのクエリから$post->IDを削除したいのですがこれを取得する方法はありますか。ありがとう

4
Adi

$post->IDは、同じメタキーを持つすべての投稿でメタ値を区別するものです。

ですから、現在の投稿に対するget_post_meta呼び出しを簡略化したいのなら、こうすることができます。

function get_cuurent_post_meta($key){
    global $post;
    return get_post_meta($post->ID,$key,true);
}

そして、あなたはそれをこのように呼ぶことができます:

echo get_cuurent_post_meta('custom_tags'.$userID);

現在の投稿ではなく、どの投稿でもこれを実行できます。

function get_meta_value_by_key($meta_key,$limit = 1){
    global $wpdb;
    if (1 == $limit)
        return $value = $wpdb->get_var( $wpdb->prepare("SELECT meta_value FROM $wpdb->postmeta WHERE meta_key = %s LIMIT 1" , $meta_key) );
    else
        return $value = $wpdb->get_results( $wpdb->prepare("SELECT meta_value FROM $wpdb->postmeta WHERE meta_key = %s LIMIT %d" , $meta_key,$limit) );
}

このキーの最初のメタ値を取得するには、単に次のように呼び出します。

echo get_meta_value_by_key('custom_tags'.$userID);

そしてこのキーのすべてのメタ値を取得するには、ex $limitパラメータを使います。

$post_meta_array = get_meta_value_by_key('custom_tags'.$userID, 999);
8
Bainternet

以下のようなものを使ってpostmetaテーブルを直接問い合わせることができます。

global $wpdb;

$metas = $wpdb->get_results( 
  $wpdb->prepare("SELECT meta_value FROM $wpdb->postmeta where meta_key = %s", 'add_your_key_here')
 );

echo '<pre>';
print_r( $metas );
echo '</pre>';

_ update _ $metasを取得したら、それらをループに渡して値を表示します。

if( count($metas) > 0 ){ #check if we got any results
  foreach ($metas as $meta){
    echo $meta->meta_value . "<br />";
  }
}
2
RRikesh