WordPress中获取页面链接和标题的相关PHP函数用法
get_permalink()(获取文章或页面链接)
get_permalink() 用来根据固定连接返回文章或者页面的链接。在获取链接时 get_permalink() 函数需要知道要获取的文章的 ID,如果在循环中则自动默认使用当前文章。
用法
get_permalink( $id, $leavename );
参数
$id
(混合)(可选)文章或者页面的 ID(整数);还可以是文章对象。
默认值在循环中自动调用当前的文章
$leavename
(布尔)(可选)转化成链接是是否忽略文章别名。如果设置成 True,那么将返回 http://.example./%postname% 而不是 http://.example./my-post-name
默认值None
返回值
(字符串 | 布尔)成功获取链接则返回链接,失败则返回 False.
例子
根据 ID 获取文章或页面的链接
<a href="<?php echo get_permalink( 268 ); ?>">获取指定 ID 的文章或页面链接</a>
循环中获取当前文章的链接
<?php echo get_permalink(); ?>
根据页面标题获取页面链接
<a href="<?php echo esc_url( get_permalink( get_page_by_title( '留言板' ) ) ); ?>">留言板</a>
其它
此函数位于wp-includes/link-template.php
wp_title()(获取网页标题)
wp_title() 用来获取当前网页的标题,也就是 title 标签里边的内容。
wp_title() 能在不同的页面自动生成不同的标题(比如首页就是网站标题、文章页就是文章标题)。WordPress 官方的主题都在使用这个函数生成标题,在国内的主题中却总是被忽视(因为默认情况下这个函数对 SEO 并不是太好)。
我还是推荐使用这个函数调用标题,更加符合主题开发规范,如果你要让他变的更加符合 SEO,可以使用过滤器优化一下,本文结尾有优化方法。
用法
wp_title( $sep, $display, $seplocation );
参数
$sep
(字符串)(可选)标题内容的分隔符,一般设置成 “|” 或者 “-”。
默认值»(»)
$display
(布尔)(可选)是否直接打印标题,如果设置成 False 则返回标题,可以存储到变量里。
默认值True(直接打印输出)
$seplocation
(字符串)(可选)分隔符所在位置,左边还是右边,如果传递 “right” 则为右边,其它任何内容都是左边。
默认值空字符串(左边)
返回值
(字符串)如果 $display 参数设置成 False,才能返回标题的内容,根据不同的标题会返回不同的内容,默认情况下返回的内容是这样的
- 文章页文章标题
- 日期页日期
- 分类页分类标题
- 作者页作者名字
如果你想更加详细的了解,可以阅读下边的函数源码
/ 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 mon 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 patibility 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 $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 aurate 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 post type archive if ( is_post_type_archive() ) { $post_type = get_query_var( 'post_type' ); if ( is_array( $post_type ) ) $post_type = reset( $post_type ); $post_type_object = get_post_type_object( $post_type ); if ( ! $post_type_object->has_archive ) $title = post_type_archive_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(); if ( $term ) { $tax = get_taxonomy( $term->taxonomy ); $title = single_term_title( $tax->labels->name . $t_sep, false ); } } // If there's an author if ( is_author() && ! is_post_type_archive() ) { $author = get_queried_object(); if ( $author ) $title = $author->display_name; } // Post type archives with has_archive should override terms. if ( is_post_type_archive() && $post_type_object->has_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 "; / Filter the parts of the page title. @since 4.0.0 @param array $title_array Parts of the page title. / $title_array = apply_filters( 'wp_title_parts', explode( $t_sep, $title ) ); // Determines position of the separator and direction of the breadcrumb if ( 'right' == $seplocation ) { // sep on right, so reverse the order $title_array = array_reverse( $title_array ); $title = implode( " $sep ", $title_array ) . $prefix; } else { $title = $prefix . implode( " $sep ", $title_array ); } / Filter the text of the page title. @since 2.0.0 @param string $title Page title. @param string $sep Title separator. @param string $seplocation Location of the separator (left or right). / $title = apply_filters( 'wp_title', $title, $sep, $seplocation ); // Send it out if ( $display ) echo $title; else return $title; }
很显然默认情况下标题是比较简陋的,对 SEO 并不是很友好。
例子
<title><?php wp_title( '|', true, 'right' ); ?></title>
其它
标题可以使用 wp_title 过滤器定制,此函数位于wp-includes/general-template.php
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程