如何解决Wordpress:将if-else语句插入next_post_link/ previous_post_link参数吗?
| 这里的第一个问题,尽管阅读和搜索节省了我的培根很多次。 我充其量是一名PHP黑客,而我正在构建的Wordpress主题正迫使我学习很多东西。 我在尝试使下一个和上一个链接的格式根据其各自的类别(而不是single.php的页面)进行不同显示时遇到问题。 到目前为止,这是我最好的尝试:<?php next_post_link(
\'%link\',if ( in_category( \'tweet\' ) ) {
get_the_content()
} else {
echo \'%title\'
};,FALSE
)?>
这导致语法错误。
我的第一个问题是,我甚至可以在函数的参数中使用if-else语句吗?
如果我以完全错误的方式接近它,那么它又回到了绘图板上。那么,我也很感谢其他建议!
我知道以下工作:
next_post_link( \'%link\',get_the_title(),FALSE );
next_post_link( \'%link\',\'%title\',FALSE );
为了更加清楚,我希望根据链接本身的类别(而不是链接所在的当前宿主页面)影响下一个/上一个链接的输出。
我遇到的问题是:a)如何确定next_post_link()和previous_post_link()属于什么类别,然后b)相应地显示其“ 2”参数。如果我可能抛出白旗,这时我发现使用get_adjacent_post()和各种数组之类的示例似乎已经不合时宜了。我真的很感激有人指导我使用它们的所有解决方案。
解决方法
瞄准什么?
我认为您混用的东西太多了,这使您的问题变得比原本要复杂的多。我知道许多新事物很容易发生,因此我认为值得在开始编写代码之前花些时间思考要做什么。最后应该有所帮助。
开始制定您想要实现的目标。如果我理解的正确,您写的是要根据类别不同地显示当前帖子下方的下一个和上一个链接。
但是,哪个类别?当前显示的帖子之一?还是上一个/下一个链接帖子的类别?
紧接着,帖子可以具有多个类别。您是否要基于一个或多个类别甚至所有类别来更改显示?
最后:是否要输出大量HTML标记以进行视觉样式?还是您想为此使用CSS。
怎么做?
在考虑了实际想要实现的目标之后,您可以确定如何实现。
在下面的代码中,我将显示一些示例代码,这些代码将执行以下操作:
说明您要更改的链接格式参数的用法。
显示如何获取有关链接的CSS类。
使用这些CSS类扩展主题的输出。
使其可用于主题中的不同文件。
因此,此示例涵盖了通过主题的CSS进行视觉样式设置的链接文章的类别,我认为这是更可取的方法。
PHP代码
PHP相当灵活,因此最终很容易完成,但是却不知道确切要做什么,PHP的这种灵活性可能会成为问题,因为也有可能放宽线索,然后编写无效的代码。
假设您只想更改
next_post_link()
函数的链接格式。
该函数将用HTML链接标记(<a href=...>Post Title</a>
)替换%link
,因此,如果将\'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);
?>
这会将下一个帖子链接包装到包含链接帖子的所有CSS类的<span>
中,以及一个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;
}
将此功能放到主题的ѭ14中。然后,您可以在所有模板中使用它。现在使用它变得非常容易:
<?php prev_post_link(my_prev_next_link_format()); ?>
...
<?php next_post_link(my_prev_next_link_format(false)); ?>
如果已将所有内容放在一起,则可以轻松设置主题CSS中下一个和上一个链接的样式。
, 您是否尝试过匿名功能?这样,您可以在函数中使用if-else语句
,尝试:
$format_string = in_category(\'tweet\') ?
\'<span style=\"color:red;\">%link</span>\' : \'%link\';
next_post_link($format_string);
第二个和第三个参数是可选的,默认为title和false。
编辑:
我不知道这个插件,但是..
if(in_category(\'tweet\')){
$format_string = \'<span style=\"color:red;\">%link</span>\';
$link_text = get_the_content();
}else{
$format_string = \'%link\';
$link_text = \'%title\';
}
next_post_link($format_string,$link_text);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。