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でそれをチェックするための任意のアイデア?
シモンズ:私の下手な英語ですみません。
これは複雑ではないので、私は手助けできませんが、何かが足りないと思います。あなたが必要としているように聞こえるのは 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
を使用してください。手間が省けます。