WordPress运用重写标签函数
Wordpress网站一般自带URL重笔文字的功能,但主题网站的URL并不怎么明显,想要使重笔文字更加显现一些,那我就可以介绍一下: 函数add_rewrite_ta 使用这个函数就可以简单修改一下Wordpress网站的URL增强重写文字:
add_rewrite_tag( string $tag, string $regex, string $query = '' )
描述:
$query参数是可选的。如果省略了它,则必须确保在“init”钩子上或之前调用它。这是因为$query默认为“$tag=”,为此必须添加一个新的查询var。
参数:
$tag
(string) (必需) 新重写标记的名称
$regex
(string) (必需) 正则表达式以替换重写规则中的标记。
$query
(string) (可选) 字符串来附加到重写的查询。必须以“=”结尾。默认空字符
简单示例:
在下面的例子中,假设一个站点有一个自定义的分类法‘Location’,并且所有的帖子都被分配了一个类似于“Paris”或“Madrid”的位置术语。我们添加一个重写标记“%Location%”来建立位置查询var。我们还添加了一个重写规则,以便正确地处理一个URL,比如example.com/goto/madand/bank-lodging/。
add_action('init', 'add_my_rewrites');
function add_my_rewrites() {
add_rewrite_tag('%location%', '([^&]+)', 'location=');
add_rewrite_rule('^goto/([^/]*)/([^/]*)/?','index.php?location=$matches[1]&name=$matches[2]','top');
}
尽管重写标记看起来就像permalink结构标记,但是如果您试图在permalink结构中使用重写标记,WordPress生成的URL看起来将类似于example.com/goto/%location%/budget-lodging/。正确的术语并不像您可能预期的那样替换重写标记。要使您的标记行为像一个结构标记,使用“post_link”筛选器将标记替换为适当的术语。
// Assign value to %location% rewrite tag
add_filter('post_link', 'my_filter_post_link', 10, 2 );
function my_filter_post_link( $permalink, $post ) {
// bail if %location% tag is not present in the url:
if ( false === strpos( $permalink, '%location%'))
return $permalink;
$terms = wp_get_post_terms( $post->ID, 'location');
// set location, if no location is found, provide a default value.
if ( 0 < count( $terms ))
$location = $terms[0]->slug;
else
$location = 'timbuktu';
$location = urlencode( $location );
$permalink = str_replace('%location%', $location , $permalink );
return $permalink;
}
每当您更改与重写API相关的内容时,不要忘记刷新重写规则!这可以通过转到固定链接设置并单击保存更改来完成,而无需使用代码。您实际上不需要在设置屏幕上进行任何更改。
0条评论