2012-02-22 5 views
0

Я использую jcart http://conceptlogic.com/jcart/, чтобы создать функциональность тележки в wordpress.Wordpress + PHP: использование переменной массива с in_array внутри другой функции

Я пытаюсь получить доступ к функции jcart в другой функции в моем файле functions.php.

foreach($jcart->get_contents() as $item) { 
    $psitems[] = $item['id']; 
} 

Этот код прекрасно работает на самом functions.php или на любом шаблоне page-- он создает $psitems массив таким образом я могу проверить, если массив содержит определенные значения.

Теперь, в следующей функции:

function gallery_shortcode_fancybox($attr) { ... 

У меня есть следующие:

foreach($jcart->get_contents() as $item) { 
    $psitems[] = $item['id']; 
} 

foreach ($attachments as $id => $attachment) { 
    $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_image($id, 'full', false, false) : wp_get_attachment_image($id, 'full', true, false); 

    $output .= "<div class='property'>"; 
    $output .= "$link"; 
    $output .= ' 
     <div class="property-details"> 
      <div class="property-details-inner"> 

       <form method="post" action="" class="jcart"> 
        <fieldset> 
         <input type="hidden" name="jcartToken" value="' . $_SESSION['jcartToken'] . '" /> 
         <input type="hidden" name="my-item-id" value="' . $id . '" /> 
         <input type="hidden" name="my-item-name" value="Photo #' . $id . '" /> 
         <input type="hidden" name="my-item-url" value="' . wp_get_attachment_url($id) . '" /> 
         <input type="hidden" name="my-item-qty" value="1" size="3" />'; 

    if(in_array($id,$psitems)) { 
     $output .= '<span class="action terminal pull-sheet">Image in Pullsheet</span>' 
    } else { 
     $output .=   '<input type="submit" name="my-add-button" value="Add to Pull Sheet" class="action terminal pull-sheet" />'; 
    } 
    $output .=    '</fieldset> 
       </form> 
      </div> <!-- property-details-inner --> 
     </div>'; 
    $output .= "</div>"; 
} 

return $output; 

Я получаю следующее сообщение об ошибке:

Call to a member function get_contents() on a non-object

Если я пытаюсь поместить оригинальный foreach($jcart->get_contents() as $item) { ... кода вне функции, я получаю следующую ошибку:

Warning: in_array() expects parameter 2 to be array, null given in... 

Как я могу получить доступ к этому массиву внутри функции и избежать этих ошибок?

Спасибо!

ответ

1

Что касается первой ошибки, это значит, что вам нужно инициализировать $ jcart.

Что касается предупреждения, попробуйте следующее:

$array = $jcart->get_contents(); 
foreach ($array as $item) ... 
+0

с помощью функции инициализации из оригинального сценария jcart.php работал отлично, спасибо –

Смежные вопросы