web-dev-qa-db-ja.com

ユニークなポストメタ値

YouTubeの動画IDやWordPressの投稿IDなどの一意のIDをカスタムフィールド「youtube_id」に使用したい。フロントエンドの追加投稿ページを作成し、 'youtube_id'が古い投稿で使用されているかどうかを確認したいと思います。

    $title = 'blah blah blah';
    $different=mysql_query("SELECT post_title FROM wp_posts WHERE post_title='$title'");
    if(mysql_num_rows($different)>0) {
    echo 'Dude, we already have this post.';
    }

このコードは投稿のタイトルがユニークかどうかを探します。これに似たものが必要です。しかし、post_titleではなくpostmetaを使う必要があります。

WordPressの機能やMySQLでそれをチェックするための任意のアイデア?

シモンズ:私の下手な英語ですみません。

1
mht

これは複雑ではないので、私は手助けできませんが、何かが足りないと思います。あなたが必要としているように聞こえるのは get_post_meta です。

$yid = get_post_meta($post->ID,'youtube_id',true);
if (empty($yid)) {
  // not set
} else {
  // set
}

編集する

ほとんどのWordPress-yソリューションにはmeta_queryが必要です。

$args = array(
  'post_type' => 'post',
  'meta_query' => array(
    array(
      'key' => 'youtube_id',
      'value' => 'some_value',
    )
  ),
  'ignore_sticky_posts' => true,
  'no_found_rows' => true,
  'posts_per_page' => 1,
  'fields' => 'ids',
);
$q = new WP_Query($args);
var_dump($q);

しかし、あなたのコードは簡単に適応可能です。

$different = $wpdb->get_var("SELECT meta_id FROM {$wpdb->postmeta} WHERE meta_key = 'youtube_id' AND meta_value = 'some_value'");
if(!empty($different)) {
    echo 'Dude, we already have this post.';
}

注:$wpdbを使用してください。手間が省けます。

1
s_ha_dum