目标是什么?
我认为你混合的东西太多了,这使得你的问题比它需要的更复杂。我知道有很多新事物,这很容易发生,所以我认为在开始编码之前花一些想法来思考要做什么是值得的。它最终应该会有所帮助。
开始制定您想要实现的目标。如果我理解正确,您写道您希望根据类别在当前帖子下方以不同方式显示下一个和上一个链接。
但是哪个类别?显示的当前帖子之一?还是上一个/下一个链接帖子的类别?
除此之外,帖子可以有多个类别。您要根据一个或多个甚至所有类别更改显示吗?
最后:您想输出大量的 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 中设置下一个和上一个链接的样式。