web-dev-qa-db-fra.com

Unique Post Meta Values

Je souhaite utiliser des identifiants uniques, tels que les identifiants vidéo YouTube et les identifiants de publication WordPress, dans un champ personnalisé "youtube_id". Je viens de créer une page d’ajout d’affichage frontal et je veux vérifier si "youtube_id" est utilisé ou non dans un article plus ancien.

    $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.';
    }

ce code cherche le titre du post est unique ou pas. J'ai besoin de quelque chose de similaire avec ça. Mais je dois utiliser postmeta, pas post_title.

Une idée de vérifier avec les fonctions WordPress ou MySQL?

PS: Désolé pour mon pauvre anglais.

1
mht

Cela ne devrait pas être compliqué, donc je ne peux pas m'empêcher de penser que quelque chose me manque. Ce dont vous avez besoin semble être get_post_meta .

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

Modifier:

Vous avez besoin d'un meta_query pour la plupart des solutions WordPress-y:

$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);

Cependant, votre code est facilement adaptable:

$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.';
}

Remarque: utilisez $wpdb. Cela vous épargnera des efforts.

1
s_ha_dum