2015-05-28 3 views
4

У меня есть сайт Wordpress, который использует изображения, заменяющие текст категории. Он настроен на наличие пост-div (отступы: 20% 0, для согласованной чувствительной высоты). Затем имеет абсолютный div, вертикальный/горизонтальный верхний предел этого div.Создание нескольких разделов категории Wordpress

HTML

<div class="indx-img" style="background-image:url('...');"> 

     <?php 
     $testStyle = ""; 

     if(has_category('update') || has_category('uncategorized')) { 
      $testStyle = "style=\"background-image:url('".get_bloginfo('template_directory')."/img/logo.png')\""; 
     } elseif(has_category('event')) { 
      $testStyle = "style=\"background-image:url('".get_bloginfo('template_directory')."/img/logo.png')\""; 
     } 
     ?> 

      <div class="test" <?php echo $testStyle; ?>></div> 

</div> 

CSS

.indx-img { 
    position: relative; 
    padding: 20% 0; 
} 

.test { 
    position: absolute; 
    left: 50%; 
    margin-left: -5em; 
    transform: translateY(-50%); 
    -webkit-transform: translateY(-50%); 
    -ms-transform: translateY(-50%); 
    height: 10em; 
    width: 10em; 
} 

Это ставило это фоновое изображение для теста. Проблема с этим заключается в том, что в столбце есть более одной категории, показывается только одна.

В идеале я хочу, чтобы div, созданный в 'тесте' для каждой категории, применяемой к сообщению с изображением категории, выровнен рядом друг с другом.

+0

Один вопрос: Почему ваши утверждения в 'if' и' elseif' идентичны ?? Если так и должно быть, тогда я не вижу смысла использовать 'if-elseif'. Единственного 'if' должно быть достаточно. –

+0

они будут меняться, прямо сейчас они похожи на то, чтобы убедиться, что это работает, в конце будет более двух утверждений, и у каждого будет другой pic – user3550879

ответ

1

По вашему коду, я думаю, что ваш HTML-код div работает для одного сообщения. и поскольку вы проверяете одну категорию с помощью has_category, она даст вам только категорию.

Для получения любой категории любого поста, вам понадобится wp_get_post_categories функция.

$post_categories = wp_get_post_categories($post_id); 
$cats = array(); 

foreach($post_categories as $c){ 
    $cat = get_category($c); 
    $cats[] = array('name' => $cat->name, 'slug' => $cat->slug); 
} 

Таким образом, вы можете получить список категорий и поместить соответствующий код стиля соответственно. см. https://codex.wordpress.org/Function_Reference/wp_get_post_categories более подробную информацию об wp_get_post_categories использования.

+0

сладкий, который кажется правильным, есть ли какой-либо другой источники с примерами, которые вы встретили, что объясняет это дальше? – user3550879

+0

https://codex.wordpress.org это само сообщество wordpress, вы можете получить все функции с параметрами и их использованием. Вместо своего первоначального определения каждой функции вы всегда можете использовать его с кодом в соответствии с вашим требование, и поскольку у всех есть разные требования, нелегко, что вы получите точный код, как вы этого хотите – Rupal

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