2016-02-27 70 views
0

我可以將ID添加到$args數組嗎?我需要檢查特定帖子是否存在鍵值對自定義字段。現在它會檢查任何帖子中是否存在關鍵值對。或者我需要執行查詢,然後檢查返回的數組中的值?Wordpress - 包含帖子ID的元數據查詢

$args = array(
    'post_type' => 'post', 
    'post_status' => 'publish', 
    'ID' => $_POST['post_id'], 
    'meta_query' => array(
      array(
        'key' => 'claim', 
        'value' => $user_ID 
      ) 
    ) 
    ); 

    // perform the query 
    $query = new WP_Query($args); 
    $vid_ids = $query->posts; 

    if (empty($vid_ids)) { 
     add_post_meta($_POST['post_id'], 'claim', $user_ID); 
    }else{ 
     echo "sorry"; 
    } 

回答

0

對於WP_Query(),請參考post/page parameters的Codex條目。 您可以通過單一的帖子ID與此

$query = new WP_Query(array('p' => 7)); 

如果你想傳遞多個帖子ID的使用

$myarray = array('100', '222'); 

$args = array(
    'post_type' => 'post', 
    'post__in'  => $myarray 
); 
// The Query 
$the_query = new WP_Query($args); 
+0

那麼,如果我只有一個帖子ID並且需要參數,那該怎麼辦。我可以做'$ query = new WP_Query(array('p'=> 7,$ args));'?似乎工作。試過了。 – Ciprian

+0

此語法錯誤。你可以像使用其他參數一樣使用p。在你的情況下用ID替換ID。 –

+0

似乎這樣做。 – Ciprian

0

使用get_post_meta得到您的對象的自定義字段值。

$claims=get_post_meta($ID,'claim'); 
$exists=false;  
if(count($claims)>0) 
{ 
    foreach($claims as $claim) 
    { 
     if($claim==$user_ID) 
     { 
      $exists=true; 
      break; 
     } 
    } 
} 
if(!$exists) 
{ 
    add_post_meta($_POST['post_id'], 'claim', $user_ID); 
} 
+0

我可以使用'get_post_meta'來檢查密鑰和值嗎?我有多個使用用戶ID作爲值的'聲明'自定義字段。 – Ciprian

+0

@ciprian我已經更新了我的答案。這應該做你需要的。 –

+0

謝謝。現在考慮其他答案......如果我將「ID」更改爲「p」,它也可以工作。剛剛完成測試。哪一種方法更快? – Ciprian