2015-10-01 45 views
1

我搜索了很多,但我找不到合適的解決方案。集成wordpress自定義字段腳本的if-else循環

我有一個custome字段,名爲「我的名字」。這個客戶字段可以添加到一個帖子(多於一次)或不添加。

$my_name = get_post_custom_values('My-Name'); 
foreach ($my_name as $my_name) 
echo $my_name; 

我的問題 - 如果此密鑰不可在後,我得到一個錯誤(警告:的foreach提供了無效的參數())。

我不想要這個錯誤消息,我想要一個「其他= html文本」,如果在這個職位沒有關鍵。我嘗試了一些if/else,但是我的PHP技巧對於成功來說太低了。有人能幫我嗎?


UPDATE:
我修改從dingo_d劇本和現在的作品 - THX!

$my_name = get_post_custom_values('My-Name'); 

if(is_array($my_name) && !empty($my_name)){ 
    foreach($my_name as $my_name){ 
    echo $my_name . "\n"; 
    } 
} else{ 
    echo 'My text'; 
} 
+1

爲什麼你的陣列式一樣的價值?您可以確保包含數組的'$ my_name'變量通過將foreach包裝在一個檢查它的表達式中存在:'if(is_array($ my_name)&&!empty($ my_name)){foreach($ my_name作爲$ value){echo $ value;}}' –

+0

@dingo_d有趣的是,我嘗試了......一會兒。 – Pepe

+0

@Pepe似乎​​我沒有給予適當的關注,當我做出答案時,所以我刪除它,因爲我的答案工作只會使其與其他答案一樣:) – Epodax

回答

0
$my_name = get_post_custom_values('My-Name'); 

if(isset($my_name)) 
    { 
    foreach ($my_name as $my_name){ 
     echo $my_name; 
    } 
    }else{ 
    echo "html goes here"; 
    } 
+0

Thx支持 - 您的解決方案更優雅,那麼我的工作就會很好! – Pepe

0

根據將返回一名失蹤POST PARAM什麼get_post_custom_values(),只需檢查所設置的參數或空:

if (isset($my_name)) 
{ 
    foreach(...) ... 
} 

if (!empty($my_name)) 
{ 
    foreach(...) ... 
} 

順便說一句:一個if-else-construct不是一個循環;-)

0

總是檢查你的變量是否填充了s進入foreach循環之前。這也取決於您期望的回報類型。我會做這樣的事情:

if(is_array($my_name) && !empty($my_name)){ 
    foreach($my_name as $value){ 
     echo $value; 
    } 
} else{ 
    echo 'My text'; 
} 

這是因爲你的$my_name變量應該返回數組。如果您的返回值是字符串,如果它被設置你檢查,如果它不是一個空字符串

if(isset($my_variable) && $my_variable != ''){...} 
+0

我認爲這不適用於wordpress「自定義字段「?像「get_post_custom_values」這樣的東西是錯過的,對吧? – Pepe

+0

你的意思是錯過了什麼?你在你的變量'$ my_names'中拉出'get_post_custom_values()'。 –

+0

Sry,我看到你的更新後的腳本 - 我嘗試你的一個,但我得到一個錯誤「致命錯誤:不能在寫入上下文中使用函數返回值」 – Pepe