2016-06-09 1 views
0

Я пытаюсь создать гиперссылку на моей домашней странице для последнего сообщения, используя и in_category(). Сайт не настроен, как выдержки из блога, а пользовательские поля загружаются в настраиваемые шаблоны страниц, используя категории с динамическим #id на основе slug, и все это отлично работает. Итак, я пытаюсь получить категорию последней публикации, а затем создаю ссылку для нее с правильным URL-адресом на основе категории, так как я могу отличить, на какой странице они находятся.WordPress: использование if else с wp_get_recent_posts

Я протестировал структуру генерации ссылок за пределами if if, и она отлично работает. Но он не работает внутри операторов if else: echo $before . $homeURL . "audio/" . "#" . $slug . $after;

Я не программист, так что это может быть глупая ошибка. Одна вещь, которую я заметил, заключается в том, что если я печатаю массив $recent, в нем, по-видимому, нет категории или номера категории, даже если я укажу категории в массиве $args, используя 'category' => '2,3,4,5'.

мне удалось решить эту проблему благодаря помощи кого-то на WordPress.org, поэтому ниже код теперь работает должным образом с помощью функцииhas_category().

<?php 
    $args = array('numberposts' => '1', 'offset' => '0', 'orderby' => 'post_date', 'order' => 'DESC', 'post_status' => 'publish'); 
    $recent_posts = wp_get_recent_posts($args); 
    $home = home_url('/'); 
    $homeURL = esc_url($home); 
    $before = '<a href="'; 
    $after = '">dive in</a>'; 

    foreach($recent_posts as $recent){ 

     $slug = basename(get_permalink($recent["ID"])); 

     // if post is audio 
     if (has_category('audioz', $recent["ID"])) { 
      echo $before . $homeURL . "audio/" . "#" . $slug . $after; 
     } 
     // else if post is video 
     else if (has_category('videoz', $recent["ID"])) { 
      echo $before . $homeURL . "videos/" . "#" . $slug . $after; 
     } 
     // else if post is article 
     else if (has_category('articlez', $recent["ID"])) { 
      echo $before . $homeURL . "article/" . "#" . $slug . $after; 
     } 
     // else if post is zazzle link 
     else if (has_category('zazzle', $recent["ID"])) { 
      echo $before . $homeURL . "store/" . "#" . $slug . $after; 
     } 
    } 
?> 

ответ

0

is_category() проверяет, является ли страница, которую вы находитесь в данный момент является страница архива категории, а более конкретно, если это страница архива указанной категории в. Во всех ваших случаях это вернет false.

Я считаю, что функция на самом деле вы ищете это in_category() и если заявление будет выглядеть примерно так:

/* Needs to have post object ($recent) so it knows what to check */ 
if (in_category('audioz', $recent)) { 
    echo $before . $homeURL . "audio/" . "#" . $slug . $after; 
} 
+0

да, у меня было, что первоначально, но пробовал не в приведенном выше примере. Я только что изменил свой код снова, используя '$ recent', и попробовал' is_category' и 'in_category' и не работал. – liquidRock

+0

Я изменил свое оригинальное сообщение, чтобы отразить ваши предложения, которые все еще не работают. – liquidRock

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

  • Нет связанных вопросов^_^