Могу ли я установить изображение по умолчанию для категории?


10

Я создаю сайт с темой, в которой используется функция «Избранные изображения» WordPress. Поскольку мои конечные пользователи не самые технологичные пользователи в мире, я бы хотел настроить их так, чтобы категориям присваивалось посту «рекомендуемое изображение» по умолчанию. В случае если нескольким категориям присвоено сообщение, оно просто заняло бы первую.

Есть ли существующий плагин или способ кодировать это?



Через 2 года появился плагин WordPress, который это делает. Оформить заказ "Избранные изображения для категорий" wordpress.org/plugins/featured-images-for-categories

Используйте этот плагин: wordpress.org/extend/plugins/categories-images Он работает и для категорий, и для любой пользовательской таксономии, вы можете узнать больше о плагине, как его использовать и много примеров в документации
Мухаммед

Ответы:


13

В вашем шаблоне, где у вас есть показанное изображение: <?php the_post_thumbnail( 'thumbnail' ); ?>вы можете сделать его условным относительно того, установлено ли выбранное изображение, а затем установить по умолчанию то, что вам нужно, если оно не установлено.

Один из способов сделать это - поместить все изображения по умолчанию в каталог и назвать их для категорий, например. news.jpg и reviews.jpg, тогда вместо того, <?php the_post_thumbnail( 'thumbnail' ); ?>чтобы использовать свое изображение, вы должны использовать это:

<?php 
   if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())  ) { 
      the_post_thumbnail('thumbnail');
   } else { ?>
      <img src="whatever/directory/<?php $category = get_the_category(); echo $category[0]->cat_name; ?>.jpg" /> <?php }
   endif;
} ?>

Таким образом, в приведенном выше примере, если сообщение находится в категории новостей, а ваш автор не установил Избранное изображение, оно по умолчанию будет соответствовать изображению, сохраненному в http://www.yoursite/whatever/directory/news.jpg.


Вот как я это делаю. +1
epaps

что случилось, если сообщение относится к нескольким категориям?
Eray

Хороший вопрос. get_the_category()вернет только одну категорию, и я забыл, как он решает, какую категорию использовать.
матовый

1
get_the category () получает все категории в виде массива, но вам нужен простой трюк. studiograsshopper.ch/code-snippets/…
Eray

2
<?php if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())) : ?>

<?php the_post_thumbnail('thumbnail'); ?>

<?php else :?>

<img src="<?php bloginfo('template_directory'); ?>/your image directory name in theme folder/<?php $category = get_the_category(); echo $category[0]->cat_name; ?>.jpg" /> 

<?php endif;?>

2

Я столкнулся с некоторыми проблемами с именами категорий с пробелами. Я немного изменил приведенный выше код в соответствии со своими потребностями.

<?php if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())) : ?>

<?php the_post_thumbnail('thumbnail'); ?>

<?php else :?>

<img src="whatever/directory/<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>.jpg" /> 

<?php endif;?>

в основном просто изменить

echo $category[0]->cat_name;

в

echo $category[0]->cat_ID;

что сделает ваше изображение 16.jpg или 3.jpg независимо от того, что соответствует номеру вашей категории.


Я думаю, что многие люди предпочитают использовать идентификатор кошки, так как это безопаснее и позволяет изменить метку категории или слаг.
Дэмиен

2

Более чистый способ сделать выше;)

if ( ( function_exists( 'has_post_thumbnail' ) ) && ( has_post_thumbnail() ) ) : 
    the_post_thumbnail( 'thumbnail' );
else :
    ?><img src="whatever/directory/<?php 
        $category = get_the_category(); echo $category[0]->cat_name; 
        ?>.jpg" /><?php
endif;

1

Я успешно использовал изображения таксономии Майкла Филдса - он добавляет функции управления на страницу редактирования категории / таксономии, чтобы избранные изображения работали для таксономий так же, как и для записей / страниц. Имеет все функции, необходимые для вашей тематики.

снимок экрана администратора таксономии

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.