0
(0)

最近在帮助一个学员处理问题的时候发现一个小问题,他想实现wordpress网站标题的自定义,包括文章列表分页也实现不同页面不同显示。这个需求需要通过标题自定义的代码进行修改实现,关于wordpress标题自定义我之前有一篇文章:wordpress网站标题自定义代码

然而我们在处理这个问题的时候发现,他所使用的这个主题在头部中并没有常规的<title></title>,有的只是一个wp_head()函数,当顺着这个函数搜索查找发现,其实这是因为wordpress4.4版本中做的一个更新导致的。

wordpress4.4版本之前标题调用方式:
<head>
<title><?php wp_title( '|', true, 'right' ); ?></title>
<?php wp_head(); ?>
</head>

wordpress更新后版本标题实现方式:
1、在主题文件的functions.php中添加以下函数:
/**
*新的 WordPress 网页标题设置方法
*/
function add_theme_support_title(){
add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'add_theme_support_title' );

2、然后在主题头部文件header.php中添加wordpress的hook函数:
<head>
<?php wp_head(); ?>
</head>

通过以上方式就可以在wordpress各网页中添加一个title的标签了,首页标题格式显示为:站点标题 – 网站描述(备注:副标题),文章页面显示为:当前页面标题 – 站点标题,如这篇文章默认的显示为:更新的wordpress页面标题调用方式 – 学建站网

新的标题实现方式是通过wordpress默认文件实现的标题展现,然而如果在wordpress4.1之前的一些版本,这种方式的标题展示并不适用,关于wordpress的版本更新,我们之前在WordPress网站安全&搬家视频教程课程中已经告诉大家,确保wordpress版本最新,这样可以有效保证网站安全。不过你还是喜欢使用之前的一些老掉牙的本版本,也可以在函数文件functions.php文件中添加一个向下兼容的代码:

/*-----------------------------------------------------------------------------------*/
# Titles for WordPress before 4.1
/*-----------------------------------------------------------------------------------*/
if ( ! function_exists( '_wp_render_title_tag' ) ) :
function tie_slug_render_title() {
?>
<title><?php wp_title( '|', true, 'right' ); ?></title>
<?php
}
add_action( 'wp_head', 'tie_slug_render_title' );
endif;

这种新的标题实现方式还为我们提供了一些自定义标题的hook信息:

  • pre_get_document_title:可以让你完全控制标题内容,如果该过滤器不返回空,则会将返回值直接当做标题。
  • document_title_separator:新的标题分隔符是 “-”,你可以用这个过滤器来修改,比如改成之前的 “|”。
  • document_title_parts:自定义标题的各个组成部分,它们分别是:标题、页码、网站描述和网站名称。

例如我们想让首页只显为站点标题,我就可以使用新的hook信息document_title_parts在函数文件中添加如下代码:
/**
*首页标题不显示网站描述
*/
function wpt_remove_tagline( $title ){
if( is_home() && isset( $title['tagline'] ) ) unset( $title['tagline'] );
return $title;
}
add_filter( 'document_title_parts', 'wpt_remove_tagline' );

而如果我们同时也想让我们分类的每个分页页面标题也显示的不同,也可以通过添加如下代码实现:

/**
*首页标题不显示网站描述
*分类分页页面标题显示不同
*/
function wpt_remove_tagline( $title ){
if( is_home() && isset( $title['tagline'] ) ) unset( $title['tagline'] );
return $title;
if( is_category() );
return single_cat_title(); $paged = get_query_var('paged'); if ($paged > 1 ) printf(' - 第 %s 页 ',$paged); echo " - "; bloginfo('name');
}
add_filter( 'document_title_parts', 'wpt_remove_tagline' );

声明:本站分享的WordPress主题/插件均遵循 GPLv2 许可协议(免费开源),相关介绍资料仅供学习参考,实际版本可能会因版本迭代或开发者调整而产生变化,如程序中涉及有第三方原创图像、设计模板、远程服务等内容,应获得作者授权后方可使用。本站不提供该程序/软件的产品授权与技术服务,亦不收取相关费用。