Unique Post Meta Values

时间:2013-11-10 作者:mht

我想在自定义字段“YouTube\\u id”中使用唯一id,如YouTube视频id和WordPress帖子id。我刚刚创建了一个前端添加帖子页面,想检查“youtube\\u 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.\';
    }
此代码查找文章标题是否唯一。我需要类似的东西。但我需要使用Posteta,而不是post\\u标题。

有没有办法用WordPress函数或mysql检查一下?

对不起,我的英语很差。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

这应该不会很复杂,所以我忍不住想我错过了什么。听起来你需要的是get_post_meta.

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

你需要一个meta_query 对于大多数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);
但是,您的代码很容易适应:

$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. 这会节省你一些精力。

结束

相关推荐

MySQL数据库向WordPress的迁移

我在一个非WordPress数据库中为一个web应用程序建立了一个MySQL数据库。该数据库有许多表,这些表中预先填充了外键行等,这需要很长时间才能输入。我正试图找出如何将这些表完整地放入WordPress数据库。我还想知道,当我这样做的时候,如何给表名一个前缀来表示它们与WordPress核心表是分开的。我还创建了processforms。我使用mysqli prepare和bind param方法阻止SQL注入的php文件,使用$wpdb prepare方法重新编码有什么好处吗?如果您能在这方面提供任