2014-12-14 3 views
0

У меня есть два запроса в Wordpress и мне интересно, есть ли способ объединить их в один? Я пробовал еще, если, но безрезультатно.Объединение нескольких, если в одном?

<?php 
$posts = get_field('appeal_forms', 'options'); 
if($posts): ?> 
    <ul> 
    <?php foreach($posts as $post): // variable must be called $post (IMPORTANT) ?> 
     <?php setup_postdata($post); ?> 
     <li> 
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
     </li> 
    <?php endforeach; ?> 
    </ul> 
    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?> 
<?php endif; ?> 

А вот второй:

<?php 
    $posts = get_field('misc', 'options'); 
    if($posts): ?> 
     <ul> 
     <?php foreach($posts as $post): // variable must be called $post (IMPORTANT) ?> 
      <?php setup_postdata($post); ?> 
      <li> 
       <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
      </li> 
     <?php endforeach; ?> 
     </ul> 
     <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?> 
    <?php endif; ?> 
+0

вам не хватает некоторых из кода? – RobP

+0

Итак, какие 2 вопроса вы хотите объединить? – JiFus

+0

Извинения, исправлено – Deedub

ответ

0

Вы должны объединить оба массивов сообщений в один массив, то цикл через него, как вы делали.

В приведенном ниже примере я получаю оба массива, проверяя, что они действительны, используя is_array, а затем объединяют их в один, используя array_merge.

<?php 
// Get both post arrays. 
$appeal_forms = get_field('appeal_forms', 'options'); 
$misc   = get_field('misc', 'options'); 

// Check both are arrays. 
if (is_array($appeal_forms) && is_array($misc)) { 
    // Combine the posts into a single array. 
    $posts = array_merge($appeal_forms, $misc); ?> 

    <ul> 
     <?php foreach ($posts as $post) { 
      setup_postdata($post); ?> 

      <li> 
       <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
      </li> 
     <?php } ?> 
    </ul> 

    <?php wp_reset_postdata(); ?> 
<?php } ?> 

Если у обоих массивов не всегда есть сообщения, тогда код необходимо адаптировать. Проверка, которую я выполняю, означает, что если апелляция или misc пусто, тогда ничего не отображается.

Если это так, решение, которое я бы предложить было бы:

$posts = array(); 

// Check each array individually and add their contents to the post array. 
if (is_array($appeal_forms)) { 
    $posts = array_merge($posts, $appeal_forms); 
} 

if (is_array($misc)) { 
    $posts = array_merge($posts, $misc); 
} 

if ($posts) {… 
+0

Спасибо, Натан, оцените !. Похоже, в if есть синтаксическая ошибка, но не уверен, что. Кроме того, будет ли это слияние результатов или их разделение? – Deedub

+0

Спасибо, что указали это. Я кодировал «на лету» и пропустил закрытие в выражении if. Все результаты будут объединены. –

+0

Я действительно не знал, что это было ... :) ха! Спасибо, что сообщили мне, что это было. Последнее, что я все еще изучаю, как сохранить результаты все еще отдельно? – Deedub

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