有没有办法查看元值是否存在帖子?
例如,假设我想看看另一篇文章是否具有“pictureID”的唯一元值,如果是,则执行其他操作。
有没有办法可以在php中编写该子句?
谢谢
答案 0 :(得分:4)
如果您不知道帖子ID
您可以使用自定义wordpress查询根据
等键来检查post metaglobal $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
}