详解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中使用Oracle数据库(2)
Oct 09 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
php中opendir函数用法实例
Nov 15 PHP
symfony表单与页面实现技巧
Jan 26 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
Yii2框架加载css和js文件的方法分析
May 25 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 PHP
php如何获取Http请求
Apr 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
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
php如何连接sql server
2015/10/16 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
微信小程序实现tab页面切换功能
2018/07/13 Javascript
浅析vue-router原理
2018/10/19 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
在Python中使用正则表达式的方法
2015/08/13 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
python中列表和元组的区别
2017/12/18 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
雪山饭庄的创业计划书范文
2014/01/18 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
开学随笔
2015/08/15 职场文书
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript