详解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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
php页面防重复提交方法总结
Nov 25 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
实例讲解PHP页面静态化
Feb 05 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
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检测mysql表是否存在的方法小结
2017/07/20 PHP
浅谈PHP进程管理
2019/03/08 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
linux 下实现python多版本安装实践
2014/11/18 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
django框架自定义用户表操作示例
2018/08/07 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
python字典的常用方法总结
2019/07/31 Python
python如何基于redis实现ip代理池
2020/01/17 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
天猫超市:阿里巴巴打造的网上超市
2016/11/02 全球购物
银行工作检查书范文
2014/01/31 职场文书
初中生评语大全
2014/04/24 职场文书
诚信承诺书模板
2014/05/26 职场文书
食品安全标语
2014/06/07 职场文书
精神病医院见习报告
2014/11/03 职场文书
法定代表人证明书
2014/11/28 职场文书
英语教师求职信范文
2015/03/20 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL
MySQL数据库查询之多表查询总结
2022/08/05 MySQL