web-dev-qa-db-ja.com

Custom_fieldがLIKE値であるすべての投稿を入手

私は、投稿を取得するためのWordpressの組み込み関数を使用してMySQLスタイルの検索を実行しようとしています。これを行う簡単な方法がおそらくあり、私はおそらく解決策から少し離れています。

カスタムフィールドを含む投稿があります。これはカスタム投稿タイプとしてインポートされたレガシデータで、custom_fieldsは古いデータベースからの追加データです。カスタムフィールドは、現在Wordpressの各投稿に対して次のように設定されています。

key = subject
val = Subject One, Subject Two, Subject Three

例として、custom_fieldの値がLIKE "Subject Two"であるすべての投稿を取得しようとしています。おそらくこれをやる簡単な方法がまだ私を襲っていないことがあります。ご協力いただきありがとうございます!

私はすでに適切に機能しているMySQLクエリを持っています。このテーマビューに対して手動でクエリを実行するのではなく、Wordpressの関数を使用してクエリを処理したいだけでした。これが実用的な例です。

// Get posts that match LIKE this subject
$cft_by_subject = $wpdb->get_results(
    "SELECT
        wp_posts.ID,
        wp_posts.post_title,
        wp_posts.post_date,
        wp_posts.post_name,
        wp_postmeta.meta_value
     FROM
        wp_posts,
        wp_postmeta
     WHERE
        (wp_posts.ID = wp_postmeta.post_id) AND
        (wp_posts.post_type = 'our-custom-post-type') AND
        (wp_posts.post_status = 'Publish') AND
        (wp_postmeta.meta_key = 'subject') AND
        (wp_postmeta.meta_value LIKE '%".$this-is-our-subject."%')
     ORDER BY
        wp_posts.ID ASC
    ",
    ARRAY_A
);
2
Will Ashworth

Meta_queryは WP_Query で使用できます。

$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        array(
            'key' => 'subject',
            'value' => 'Subject Two',
            'compare' => 'LIKE'
        )
    )
 );
$query = new WP_Query( $args );
2
Brady