若你使用过WooCommerce插件,那么你会发现WooCommerce的默认固定链接是由 /product/商品名称 构成的。这种默认的结构对于seo来说不是很友好,具体原因如下:
- 显示中文,或者标题过长导致url过长
显示中文的url对于seo非常不好的,如果使用了 Pinyin Slugs 插件,那么链接最后显示的是中文名转译的拼音,很容易就导致url过长,大家一般认为搜索引擎更喜欢简短的url。
- 伪静态结构
若你的网站是伪静态结构,如我们所推荐的 /%post_id%.html 结构,那么商品的结构就和wordpress文章的伪静态结构不一样了,我们建议保持统一的静态结构将对SEO优化有利。
实现方法
一、将下方的代码粘帖在主题的 functions.php 文件中:
ID固定形式
$posttypes = array(
'product' => 'product',//Woocommerce产品自定义文章类型
'portfolio' => 'portfolio'//作品集自定义文章类型
);
add_filter('post_type_link', 'custom_book_link', 1, 3);
function custom_book_link( $link, $post = 0 ){
global $posttypes;
if ( in_array( $post->post_type,array_keys($posttypes) ) ){
return home_url( $posttypes[$post->post_type].'/' . $post->ID .'.html' );
} else {
return $link;
}
}
add_action( 'init', 'custom_book_rewrites_init' );
function custom_book_rewrites_init(){
global $posttypes;
foreach( $posttypes as $k => $v ) {
add_rewrite_rule(
$v.'/([0-9]+)?.html$',
'index.php?post_type='.$k.'&p=$matches[1]',
'top' );
}
}
别名固定方式
$posttypes = array(
'product' => 'product',//Woocommerce产品自定义文章类型
'portfolio' => 'portfolio'//作品集自定义文章类型
);
add_filter('post_type_link', 'custom_book_link', 1, 3);
function custom_book_link( $link, $post = 0 ){
global $posttypes;
if ( in_array( $post->post_type,array_keys($posttypes) ) ){
return home_url( $posttypes[$post->post_type].'/' . $post->post_name .'.html' );
} else {
return $link;
}
}
add_action( 'init', 'custom_book_rewrites_init' );
function custom_book_rewrites_init(){
global $posttypes;
foreach( $posttypes as $k => $v ) {
add_rewrite_rule(
$v.'/([一-龥a-zA-Z0-9_-]+)?.html([sS]*)?$',
'index.php?post_type='.$k.'&name=$matches[1]',
'top' );
}
}
二、WordPress后台->设置->固定连接->商品(产品)固定连接->自定义基础连接中输入 /%postname%.html/ 即可商品(产品)页固定链接html后缀。