2014-08-29 83 views
-2

在我的代碼中,booklist是一個自定義帖子類型,booklink作爲自定義字段。這書目是postobject爲自定義後類型的書籍錯誤爲foreach提供的strip_tags()和無效參數()

我不斷收到此錯誤

用strip_tags()預計參數1是線串11

提供的foreach

無效的參數()爲線12

<?php 

$all= get_posts(array('post_type' => 'books', 'numberposts' => -1,)); 

foreach ($all as $post) : setup_postdata($post); 

    if (!empty($post)) 
    { 
    $booklink = array(); 

    $booklist = strip_tags(get_field('booklist')); 
       foreach ($booklist as $post) : setup_postdata($post); 
        if (!empty($post)) 
         { 
         $booklink[] = strip_tags(get_field('booklink',$post));          
         } 
       endforeach; 
       wp_reset_postdata(); 
echo $booklink[0]; 

    } 
endforeach; 
?> 
+1

那麼問題是什麼?很顯然,'get_field('booklist')'產生一個對象,'strip_tags'想要一個字符串... – Ohgodwhy 2014-08-29 16:24:01

+2

當出現錯誤時'strip_tags'返回一個字符串或'FALSE',但'foreach'想要一個數組。 – Barmar 2014-08-29 16:24:35

回答

0

你治療$booklist如下字符串(strip_tags返回一個字符串)

$booklist = strip_tags(get_field('booklist')); 

然後這裏作爲陣列

foreach ($booklist as $post) : 

你不能做到這一點。 foreach需要一個數組。

你需要做的(假設get_field返回數組,因爲它顯然不是返回一個字符串)什麼是通過數組循環和運行功能有

$booklist = get_field('booklist'); 
foreach ($booklist as $post) : 
    $post = strip_tags($post); 
+0

這是不正確的,你可以在一個字符串上使用foreach(),並在每次迭代中獲得它的一個字符。這裏的問題是,在這種情況下,傳遞給'strip_tags'('get_field('...')')的參數返回類似null的其他參數(未定義)。 你應該用!is_string()檢查'get_field'的返回值,你可能想把它分成數組然後('explode(',',get_field('bookmarks'))'),你有你的數組迭代(我猜這個字段有一個來自wordpress後端的文本值) – Torben 2014-08-29 16:34:46

+0

@Torben儘管你可以將一個字符串當作一個數組來解析它,但是我真的懷疑這裏是用例(這種用途不常見)。該函數可能會返回null,但爲什麼你會「foreach」呢?無論哪種方式,我們都不知道'get_result'實際上做了什麼。 OP應該啓發我們 – Machavity 2014-08-29 16:56:35

1

我添加endforeach和刪除的帶狀標籤代碼爲get_field,它解決了這個問題。

相關問題