详解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 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
封装一个PDO数据库操作类代码
Sep 09 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
用来解析.htpasswd文件的PHP类
Sep 05 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
tp5框架使用composer实现日志记录功能示例
Jan 10 PHP
PHP使用递归按层级查找数据的方法
Nov 10 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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设计模式 php实现适配器模式
2015/12/07 PHP
php session的锁和并发
2016/01/22 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
PDO::setAttribute讲解
2019/01/29 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
使用python遍历指定城市的一周气温
2017/03/31 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python面向对象类的继承实例详解
2018/06/27 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
python 实现任务管理清单案例
2020/04/25 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
学生会竞选自荐信
2013/10/12 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
交通工程专业推荐信
2014/09/06 职场文书
公司租房协议书
2014/10/14 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
2015入党自传书范文
2015/06/26 职场文书