Wordpress:将if-else语句插入next_post_link/ previous_post_link参数吗?

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-