2014-05-22 28 views
1

所以我試圖用Wordpress post meta制定條件。如果用戶填寫了帖子meta,我一直在使用get_post_meta()來顯示內容,但我需要改進規則併爲其添加一些附加條件。Wordpress get_post_meta - 如何檢查多個鍵?

基本上,我需要做的是擴展這個條件爲多個鍵。如果用戶輸入post_meta_1post_meta_2,則某些代碼將運行,否則將運行其他代碼。

這是我目前使用的代碼:

不知怎的,我設法得到它

if (!((get_post_meta($post->ID, array('post_meta_1', 'post_meta_2'), false))=='')) { 
    // code here 
} elseif { 
    // code here as well 
}?> 

編輯:

if (!((get_post_meta($post->ID, 'post_meta_1', TRUE))=='')) { 
    // code here 
} elseif { 
    // code here as well 
}?> 

這裏是我的PHP邏輯走多遠使用此方法工作:

<?php 

$post_meta_1 = get_post_meta($post->ID, 'post_meta_1', TRUE); 
$post_meta_2 = get_post_meta($post->ID, 'post_meta_2', TRUE); 

if ($post_meta_1 && $post_meta_2) : ?> 

CODE HERE 

<?php endif; ?> 
+0

究竟有什麼問題? – bodi0

+0

我不知道爲什麼,但使用數組無法正常工作,它完全忽略了除第一個以外的所有其他值。 – michaelw90

+0

那麼,您不能將數組作爲第二個參數傳遞給函數get_post_meta(),它應該是一個**字符串**,請參閱http://codex.wordpress.org/Function_Reference/get_post_meta – bodi0

回答

3

您將需要單獨調用get_post_meta()每個meta_key你想爲一個值。您可以有下一個meta_key這是第三個參數是什麼存儲多個值 - true返回一個值,false價值爲meta_key的數組。如果數據庫中沒有值,則get_post_meta()的結果將爲=== false,或者您也可以檢查empty()

$capacity = get_post_meta($post->ID, 'post_meta_1', true); 
$approved_environment = get_post_meta($post->ID, 'post_meta_2', true); 

if ($capacity && $approved_environment){ 
    // post_meta_1 AND post_meta_2 are set 
} 

if (false !== $capacity && false !== $approved_environment){ 
    // post_meta_1 AND post_meta_2 are not set 
} 

if (false !== $capacity || false !== $approved_environment){ 
    // post_meta_1 AND/OR post_meta_2 are not set 
} 

if (empty($capacity) && empty($approved_environment)){ 
    // post_meta_1 AND post_meta_2 are not set or are equal to "", null, or 0 
} 

if (empty($capacity) || empty($approved_environment)){ 
    // post_meta_1 AND/OR post_meta_2 are not set or are equal to "", null, or 0 
} 
+0

我試過了,出於某種原因,我不能讓它使用括號來工作。使用'if($ post_meta_1 && $ post_meta_2):?>'標記確實可以。我用你的其他陳述充實了我的規則,所以謝謝:) – michaelw90

+0

我認爲你很容易混淆元鍵和它們分配給它們的變量名。在上面的示例中,您的元鍵後面有一個$,但我沒有在我的示例中爲該變量分配任何內容。 – doublesharp

相關問題