详解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函数的常用方法及注意之处小结
Jul 10 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
php读取文件内容的方法汇总
Jan 24 PHP
PHP自毁程序(慎用)
Jul 09 PHP
PHP+ajax分页实例简析
Dec 07 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
nginx下安装php7+php5
Jul 31 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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检查页面是否被百度收录
2015/10/28 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
python str与repr的区别
2013/03/23 Python
介绍Python中的文档测试模块
2015/04/28 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
python实现快递价格查询系统
2020/03/03 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
建筑工程实习自我鉴定
2013/09/19 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
欠条样本
2015/07/03 职场文书
通讯稿范文
2015/07/22 职场文书
七年级上册生物的课件
2019/08/07 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
宝塔更新Python及Flask项目的部署
2022/04/11 Python