0

次のクエリは、カスタム フィールド キーのすべての値を取得できます。収集元: http://goo.gl/94qw3

function get_meta_values( $key = '', $type = 'post', $status = 'publish' ) {
global $wpdb;
if( empty( $key ) )
    return;
$r = $wpdb->get_col( $wpdb->prepare( "
    SELECT pm.meta_value FROM {$wpdb->postmeta} pm
    LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
    WHERE pm.meta_key = '%s' 
    AND p.post_status = '%s' 
    AND p.post_type = '%s'
", $key, $status, $type ) );
return $r;
}
$my_var = get_meta_values( 'YOURKEY' );

「カスタム フィールド A」のキーの値「2010」と一致する場合、「カスタム フィールド B」のキーのすべての値を取得したいと考えています。

例:

私は 2 つのキーを持っています (2 つのコスト フィールド)

-------------------------
Movie Yr | Artist
---------------------------
2000     | Artist One   
2008     | Artist Two
2012     | Artist Three
         | Artist Four  
         | Artist Five
---------------------------

上記のクエリを使用すると、次のリストを取得できます。

---------
Movie Yr
---------
2000    
2008    
2012    
---------

フィールド「映画年」の値「2010」を選択した後、アーティストのリストを取得したいと考えています。すべてのアーティストではなく、「2010」に関係のあるアーティストのみ。何かのようなもの

---------
Artist
---------
Artist Two  
Artist Four
Artist Five
---------
4

1 に答える 1

0

ここに来たら、別のフィルターを追加するすべての値を取得する代わりに。私は正しいですか?

もしそうなら - 必要なのは、取得した SQL を編集して、必要なフィルターを追加することだけです。これはあなたのSQLです:

SELECT pm.meta_value FROM {$wpdb->postmeta} pm LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id WHERE pm.meta_key = '%s'  AND p.post_status = '%s' AND p.post_type = '%s'

これ%sは、後に続く変数からコンテンツを取得しています。

$key, $status, $type

その順序で。

あなたの場合、SQLクエリにエクストラを追加するだけです。

やりたいことを言っていただければ助かります...あなたの説明はかなり混乱しています。

于 2013-06-02T18:03:01.430 に答える