如何根据元值查看帖子是否存在

时间:2014-10-30 03:40:09

标签: php wordpress

有没有办法查看元值是否存在帖子?

例如,假设我想看看另一篇文章是否具有“pictureID”的唯一元值,如果是,则执行其他操作。

有没有办法可以在php中编写该子句?

谢谢

3 个答案:

答案 0 :(得分:4)

如果您不知道帖子ID

您可以使用自定义wordpress查询根据

等键来检查post meta
global $wpdb;
$wpdb->get_results( "select * from $wpdb->postmeta where meta_key = 'pictureID' " );

然后你可以使用帖子ID获得所有结果,然后获得该帖子数据。

希望这会有所帮助;)

答案 1 :(得分:2)

您可以使用标准WP_Query使用meta_key参数和meta_query比较类型按EXISTS返回帖子。

// query for all posts with the pictureID meta key set
$args = array(
    'post_type'  => 'post', // or your_custom_post_type
    'meta_query' => array(
        array(
            'key'     => 'pictureID',
            'compare' => 'EXISTS',
        ),
    ),
}

// create a custom query
$my_query = new WP_Query( $args );

// loop over your query, creating a custom The Loop
if ( $my_query->have_posts() ): while ( $my_query->have_posts() ): $my_query->the_post();
    // $post is now posts that have a pictureId meta value
endwhile; endif;

// reset $post
wp_reset_postdata();

如果你想快速获取一个拥有这个meta_key集的随机post_id,你可以直接进入数据库(绕过缓存等)。

global $wpdb;

// SQL statement to fetch the post_id using a meta_key and a published post
$sql = <<<SQL
    SELECT post_id 
    FROM {$wpdb->postmeta} pm 
    JOIN {$wpdb->posts} p 
      ON p.ID = pm.post_id 
        AND post_status = 'publish' 
        AND post_type = 'post'
    WHERE meta_key = 'pictureID' 
      AND meta_value != ''
      AND post_id != %d
    ORDER BY RAND() 
    LIMIT 1
SQL;

// exclude the current post by replacing %d with the current ID
$sql = $wpdb->prepare( $sql, $post->ID );

// use get_var() to return the post_id
$post_id = $wpdb->get_var( $sql );

答案 2 :(得分:1)

首先尝试获取帖子get_post_meta()

的元值
$postMetaValue=get_post_meta($postId,"meta_key",true);
if($postMetaValue=='pictureID')
  {
     //do as you want
  }