メタキー "videoid"の投稿がいくつかあるとしましょう。そのメタキーの値は投稿ごとに異なります(そして異なる必要があります)。新しい投稿を追加するとき、その正確な値を持つvideoidが古い投稿にすでに存在するかどうかを確認する方法はありますか。私はWPの管理領域にカスタムメタボックスを追加するための参照としてこれを使いました: http://codex.wordpress.org/Function_Reference/add_meta_box
カスタムフィールドパラメータ - meta_query を使用してWP_Query
でクエリを実行するだけで、メタキーと値を含む投稿を検索できます。
// args to query for your key
$args = array(
'post_type' => 'your_post_type',
'meta_query' => array(
array(
'key' => 'videoid',
'value' => '111'
)
),
'fields' => 'ids'
);
// perform the query
$vid_query = new WP_Query( $args );
$vid_ids = $vid_query->posts;
// do something if the meta-key-value-pair exists in another post
if ( ! empty( $vid_ids ) ) {
// do your stuff
}
query_post()
を使う必要はありません - WP_Queryとquery_posts()とget_posts()のどちらを使うべきですか? 。 IDだけでなく、投稿オブジェクトの完全な配列が必要な場合は、'fields' => 'ids'
を削除します。
ialocinの答えは、変数として格納されているwp_queryがIDの配列を吐き出すだけであると誤って述べています。代わりにそれは全体のWP_Queryオブジェクトを与えます、それであなたはポストIDのその配列を得るために - > postsを使わなければなりません。
// args to query for your key
$args = array(
'post_type' => 'YOUR_POST_TYPE',
'meta_query' => array(
array(
'key' => 'YOUR_META_FIELD_NAME',
'value' => '111'
)
),
'fields' => 'ids'
);
// perform the query
$query = new WP_Query( $args );
$duplicates = $query->posts;
// do something if the key-value-pair exists in another post
if ( ! empty( $duplicates ) ) {
// do your stuff
}
あるいはそれを関数でラップする:
function meta_value_exists($your_meta_value) {
$args = array(
'post_type' => 'YOUR_POST_TYPE',
'post_status' => 'publish',
'numberposts' => 1,
'meta_key' => 'your_meta_field',
'meta_value' => $your_meta_value,
);
$current_post = get_posts($args);
if( $current_post ) {
return true;
} else {
return false;
}
}
それであなたはただあなたのメタ値をチェックすることができます:
$video_id = 1234;
if(meta_value_exists($video_id){
// do something if exists
} else {
// do something if not exists
}
それを見つけた:
$args = array(
'meta_query' => array(
array(
'key' => 'videoid',
'value' => $_POST['videoid']
)
)
);
$videoQuery = new WP_Query( $args );
if ( $videoQuery->have_posts() ) :
while ( $videoQuery->have_posts() ) :
$videoQuery->the_post(); ?>
echo "<h3 class='post-title'>" . the_title() . "</h3>";
endwhile;
endif;