详解WordPress开发中wp_title()函数的用法


Posted in PHP onJanuary 07, 2016

wp_title 函数在 WordPress 中是用来显示文章、页面、分类等等等等标题的一个函数,但在首页索引,该函数将不显示任何的东西。该函数在 WordPress 官方主题中一直被使用,但目前很多定制的主题中这个函数总是为忽视。

函数意义详解
wp_title 函数用来显示页面的标题,如在文章页面,则显示文章标题;在分类页面,则显示分类名称,但在首页索引,该函数将不显示任何的东西。
有点像 WordPress 中的 get_the_title 和 single_cat_title()这两个函数的自适应用法(自动判断是页面、文章还是分类、归档、标签)。

函数声明
有点长,希望您能耐心看一遍,哪怕只有那么一遍。

/**
 * Display or retrieve page title for all areas of blog.
 *
 * By default, the page title will display the separator before the page title,
 * so that the blog title will be before the page title. This is not good for
 * title display, since the blog title shows up on most tabs and not what is
 * important, which is the page that the user is looking at.
 *
 * There are also SEO benefits to having the blog title after or to the 'right'
 * or the page title. However, it is mostly common sense to have the blog title
 * to the right with most browsers supporting tabs. You can achieve this by
 * using the seplocation parameter and setting the value to 'right'. This change
 * was introduced around 2.5.0, in case backwards compatibility of themes is
 * important.
 *
 * @since 1.0.0
 *
 * @param string $sep Optional, default is '»'. How to separate the various items within the page title.
 * @param bool $display Optional, default is true. Whether to display or retrieve title.
 * @param string $seplocation Optional. Direction to display title, 'right'.
 * @return string|null String on retrieve, null when displaying.
 */
function wp_title($sep = '»', $display = true, $seplocation = '') {
global $wpdb, $wp_locale;
 
$m = get_query_var('m');
$year = get_query_var('year');
$monthnum = get_query_var('monthnum');
$day = get_query_var('day');
$search = get_query_var('s');
$title = '';
 
$t_sep = '%WP_TITILE_SEP%'; // Temporary separator, for accurate flipping, if necessary
 
// If there is a post
if ( is_single() || ( is_home() && !is_front_page() ) || ( is_page() && !is_front_page() ) ) {
 $title = single_post_title( '', false );
}
 
// If there's a category or tag
if ( is_category() || is_tag() ) {
 $title = single_term_title( '', false );
}
 
// If there's a taxonomy
if ( is_tax() ) {
 $term = get_queried_object();
 $tax = get_taxonomy( $term->taxonomy );
 $title = single_term_title( $tax->labels->name . $t_sep, false );
}
 
// If there's an author
if ( is_author() ) {
 $author = get_queried_object();
 $title = $author->display_name;
}
 
// If there's a post type archive
if ( is_post_type_archive() )
 $title = post_type_archive_title( '', false );
 
// If there's a month
if ( is_archive() && !empty($m) ) {
 $my_year = substr($m, 0, 4);
 $my_month = $wp_locale->get_month(substr($m, 4, 2));
 $my_day = intval(substr($m, 6, 2));
 $title = $my_year . ( $my_month ? $t_sep . $my_month : '' ) . ( $my_day ? $t_sep . $my_day : '' );
}
 
// If there's a year
if ( is_archive() && !empty($year) ) {
 $title = $year;
 if ( !empty($monthnum) )
 $title .= $t_sep . $wp_locale->get_month($monthnum);
 if ( !empty($day) )
 $title .= $t_sep . zeroise($day, 2);
}
 
// If it's a search
if ( is_search() ) {
 /* translators: 1: separator, 2: search phrase */
$title = sprintf(__('Search Results %1$s %2$s'), $t_sep, strip_tags($search));
}
 
// If it's a 404 page
if ( is_404() ) {
 $title = __('Page not found');
}
 
$prefix = '';
if ( !empty($title) )
 $prefix = " $sep ";
 
// Determines position of the separator and direction of the breadcrumb
if ( 'right' == $seplocation ) { // sep on right, so reverse the order
$title_array = explode( $t_sep, $title );
$title_array = array_reverse( $title_array );
$title = implode( " $sep ", $title_array ) . $prefix;
} else {
 $title_array = explode( $t_sep, $title );
 $title = $prefix . implode( " $sep ", $title_array );
}
 
$title = apply_filters('wp_title', $title, $sep, $seplocation);
 
// Send it out
 if ( $display )
 echo $title;
 else
 return $title;
 
}

用法

<?php wp_title( $sep, $echo, $seplocation ); ?>

参数详解

  • $sep:分隔符;
  • $echo:是否显示;
  • $seplocation:分隔符所在位置(左还是右,只接受'right',如果不是right自动判定为左)

总结

WordPress 中相同功能的函数有很多,都是从基层到高级不断的经过封装最后到达使用层的,当然如果我们需要一些灵活用法的话,我们可以直接用中间那层的函数,如果我们懒的话我们可以直接使用最高级的那层函数,诸如本函数 wp_title ,其实这个函数我们从源代码来看, wp 替我们针对 分类、标签、文章、归档、作者、页面等多种类型的页面进行了判断,并根据不同页面调用不同的标题函数来达到目的。
如果有时间,您可以对下面几个函数进行深入研究一下,一遍更灵活的进行seo
single_post_title 文章页面提取标题的函数
single_term_title tag(标签)、cat(分类)、日期、提取标题的函数 类似于 single_cat_title()函数
get_queried_object 作者页面提取对象的函数(对象中有作者名)
post_type_archive_title()规档等等提取标题的函数
还等什么?
GO GO GO !

PHP 相关文章推荐
PHP 选项及相关信息函数库
Dec 04 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
PHP 图片水印类代码
Aug 27 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 PHP
php递归方法实现无限分类实例代码
Feb 28 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Jun 25 PHP
linux中cd命令使用详解
Jan 08 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 #PHP
PHP编程基本语法快速入门手册
Jan 07 #PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 #PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 #PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 #PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 #PHP
PHP中substr函数字符串截取用法分析
Jan 07 #PHP
You might like
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php中计算时间差的几种方法
2009/12/31 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
PHP面向对象教程之自定义类
2014/06/10 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
js图片处理示例代码
2014/05/12 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
详解Vue之事件处理
2020/07/10 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
Python实现telnet服务器的方法
2015/07/10 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
最新党员的自我评价分享
2013/11/04 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
会计专业求职信
2014/08/10 职场文书
初中优秀学生评语
2014/12/29 职场文书
升学宴学生答谢词
2015/01/05 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL