К чему стремиться?
Я думаю, вы слишком много смешиваете, что делает вашу проблему более сложной, чем она должна быть.Я знаю, что со многими новыми вещами это может произойти довольно легко, поэтому я думаю, что стоит подумать о том, что нужно сделать, прежде чем начинать писать код.Это должно помочь в конце.
Начните формулировать, чего вы хотите достичь.Если я вас правильно понял, вы пишете, что хотите отображать следующие и предыдущие ссылки под текущим сообщением по-разному в зависимости от категории.
Но какая категория?Один из текущего сообщения , который отображается?Или категория предыдущая / следующая ссылка ?
Рядом с этим сообщения могут иметь несколько категорий.Вы хотите изменить отображение на основе одной или нескольких или даже всех категорий?
И, наконец: Вы хотите вывести тонны HTML-тегов для визуального оформления?Или вы хотите использовать CSS для этого.
Как это сделать?
После того, как вы подумали о , что вы действительно хотите достичьВы можете подумать, как это можно сделать.
Далее я покажу пример кода, который будет выполнять следующее:
- Объясняетиспользование параметра link-format , который вы хотите изменить.
- Показывает, как получить CSS-классы для рассматриваемых ссылок.
- Расширяет вывод темы с помощьюэти CSS-классы.
- Сделайте его повторно используемым для различных файлов в вашей теме.
Так что этот пример охватывает категории связанных постов для визуального оформления с помощью CSS вашей Темы, которыйЯ думаю, что это предпочтительный способ.
PHP-код
PHP довольно гибок, так что в конце концов это легко сделать, но не зная, что именно делать, эта гибкость в PHP можетоказаться проблемой, потому что это также можно потерять следи затем кодируем что-то нерабочее.
Скажем так, вы просто хотите изменить формат ссылки для функции next_post_link()
.
Функция заменит %link
тегом HTML-ссылки (<a href=...>Post Title</a>
), поэтому, если вы возьмете 'This is the next post of my blog: %link; waiting to be read!'
в качестве параметра, вы добавите текст вокруг ссылки.
<?php
$format = 'This is the next post of my blog: %link; waiting to be read!';
next_post_link($format);
?>
Вы можетедополнительно добавьте HTML-теги вокруг него:
<?php
$format = '<span style="font-size:2em">%link</span>';
next_post_link($format);
?>
, что сделает все ссылки на следующие посты двойным стандартным размером шрифта.
Так что теперь сделать это немного прощедля создания тем лучше всего было бы добавить классы CSS категории / категорий, тогда вы можете легко изменить отображение в CSS.
<?php
$inSameCategory = true; // depends on what you want, can be false as well
$nextPost = get_adjacent_post($inSameCategory, '', false);
$cssClasses = get_post_class('next-post-link ', $nextPost);
$format = sprintf('<span class="$s>%link</span>', $cssClasses);
next_post_link($format);
?>
Это приведет к тому, что ссылка на следующий пост будет преобразована в <span>
, содержащий все CSS-классы связанного поста плюс класс next-post-link
на случай, если это понадобится CSS-селектору для стилизации ссылок.Вот несколько примеров CSS:
.next-post-link.category-tweet {font-size: 2em;}
Создание возможности повторного использования
Поскольку у вас есть следующая и предыдущая ссылка, вы можете скопировать этот код только для изменения одного параметра.Но мы ленивы, и вместо этого мы оборачиваем ее в собственную функцию:
/**
* my theme's format string for prev|next_post_link()
*
* @param bool $previous (optional) previous (true, default) or next (false) post
* @param bool $inSameCategory (optional) use same category, default: true
* @return string
*/
function my_prev_next_link_format($previous = true, $inSameCategory = true) {
$postId = get_adjacent_post($inSameCategory, '', $previous);
$cssClasses = get_post_class('next-post-link ', $nextPost);
$format = sprintf('<span class="$s>%link</span>', $cssClasses);
return $format;
}
Поместите эту функцию в functions.php
вашей темы.Это доступно тогда во всех ваших шаблонах.Его использование теперь стало очень простым:
<?php prev_post_link(my_prev_next_link_format()); ?>
...
<?php next_post_link(my_prev_next_link_format(false)); ?>
Если вы все это соединили, вы можете легко оформить следующие и предыдущие ссылки в CSS вашей темы.