如何去掉WordPress分类目录url链接中的category,如何处理生成的作者链接
一个新网站需要结合SEO,才能做成一个优秀的网站,
◆◆◆ 关于WordPress的分类目录url中含有category的处理办法:
1,如果是新网站这些设置需要提前做,方便以后做SEO
1、修改固定链接设置
打开WP后台-设置-固定链接
文章图片
自定义结构,可以依据对SEO友好设置url
文章图片
温馨提示:在分类目录那一栏里写入英文半角的点,此时得需要你的网站是全新的,没有分类栏目和文章,这样才不会出错,如果已有文章,这样的方法会使你的文章和分类栏目不存在
2.借助Wordpress插件
使用插件“WP No Category Base”插件
3.WP No category Base 插件的主体代码插入到function.php中(不使用插件,只放代码在后台)
//去除分类标志代码
add_action( 'load-themes.php','no_category_base_refresh_rules');
add_action('created_category', 'no_category_base_refresh_rules');
add_action('edited_category', 'no_category_base_refresh_rules');
add_action('delete_category', 'no_category_base_refresh_rules');
function no_category_base_refresh_rules() {
global $wp_rewrite;
$wp_rewrite -> flush_rules();
}
// register_deactivation_hook(__FILE__, 'no_category_base_deactivate');
// function no_category_base_deactivate() {
//remove_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
//// We don't want to insert our custom rules again
//no_category_base_refresh_rules();
// }
// Remove category base
add_action('init', 'no_category_base_permastruct');
function no_category_base_permastruct() {
global $wp_rewrite, $wp_version;
if (version_compare($wp_version, '3.4', '<')) {
// For pre-3.4 support
$wp_rewrite -> extra_permastructs['category'][0] = '%category%';
} else {
$wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
}
}
// Add our custom category rewrite rules
add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
function no_category_base_rewrite_rules($category_rewrite) {
//var_dump($category_rewrite);
// For Debugging
$category_rewrite = array();
$categories = get_categories(array('hide_empty' => false));
foreach ($categories as $category) {
$category_nicename = $category -> slug;
if ($category -> parent == $category -> cat_ID)// recursive recursion
$category -> parent = 0;
elseif ($category -> parent != 0)
$category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename;
$category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
$category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
$category_rewrite['(' . $category_nicename . ')/?$'] = 'index.php?category_name=$matches[1]';
}
// Redirect support from Old Category Base
global $wp_rewrite;
$old_category_base = get_option('category_base') ? get_option('category_base') : 'category';
$old_category_base = trim($old_category_base, '/');
$category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]';
//var_dump($category_rewrite);
// For Debugging
return $category_rewrite;
}
// Add 'category_redirect' query variable
add_filter('query_vars', 'no_category_base_query_vars');
function no_category_base_query_vars($public_query_vars) {
$public_query_vars[] = 'category_redirect';
return $public_query_vars;
}
// Redirect if 'category_redirect' is set
add_filter('request', 'no_category_base_request');
function no_category_base_request($query_vars) {
//print_r($query_vars);
// For Debugging
if (isset($query_vars['category_redirect'])) {
$catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'], 'category');
status_header(301);
header("Location: $catlink");
exit();
}
return $query_vars;
}
◆◆◆WordPress会生成很多作者链接
因为wp有一个作者归档的模板文件
wordpress作者的相关函数调用代码
显示文章的作者
2. 显示文章作者的描述(作者个人资料中的描述)
3. 显示文章作者的登录名
4. 显示文章作者的firstname(名)
5. 显示文章作者的lastname(姓)
6. 显示文章作者的昵称
7. 显示文章作者的ID号
8. 显示文章作者的电子邮箱
9. 显示文章作者的网站地址
10.(添加于2.1版本) 显示一个以文章作者名为链接名,链接地址为文章作者的网址的链接。
11. (不推荐使用) 显示文章作者的icq
12. 显示文章作者的aim
13. 显示文章作者的yim
14. (不推荐使用) 显示文章作者的msn
15. 显示文章作者已发表文章的篇数
16. 显示一个链接到文章作者已发表文章列表的链接
17. (不推荐使用) 显示blog所有作者和他们的相关信息。完整函数如下:
1. 一个不错的解决方法是将WordPress作者存档链接中的用户名改为昵称。
修改方法如下:
/**
* 将WordPress作者存档链接中的用户名改为昵称
* https://www.wpdaxue.com/use-nickname-for-author-slug.html
*/
//使用昵称替换用户名,通过用户ID进行查询
add_filter( 'request', 'wpdaxue_request' );
function wpdaxue_request( $query_vars )
{
if ( array_key_exists( 'author_name', $query_vars ) ) {
global $wpdb;
$author_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='nickname' AND meta_value = https://www.it610.com/article/%s", $query_vars['author_name'] ) );
if ( $author_id ) {
$query_vars['author'] = $author_id;
unset( $query_vars['author_name'] );
}
}
return $query_vars;
}
//使用昵称替换链接中的用户名
add_filter( 'author_link', 'wpdaxue_author_link', 10, 3 );
function wpdaxue_author_link( $link, $author_id, $author_nicename )
{
$author_nickname = get_user_meta( $author_id, 'nickname', true );
if ( $author_nickname ) {
$link = str_replace( $author_nicename, $author_nickname, $link );
}
return $link;
}
如果不希望蜘蛛爬取这些链接:给作者链接添加nofollow
打开wp-includes/author-template.php
查找‘%3$s',只需加个nofollow标签,例如:'%3$s'
2.更改wordpress主题内的function.php文件,在php循环内增加如下代码:
//给 the_author_post_link 生成的链接加上 rel="nofollow"
add_filter('the_author_posts_link','cis_nofollow_the_author_posts_link');
function cis_nofollow_the_author_posts_link ($link) {return str_replace('
更改/移除WordPress作者存档页面的前缀“author”
3.可以在根目录下新建一个作者页面author.php
【如何去掉WordPress分类目录url链接中的category,如何处理生成的作者链接】转载于:https://www.cnblogs.com/cheryshi/p/7693035.html
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- java中如何实现重建二叉树
- Linux下面如何查看tomcat已经使用多少线程
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 2019女表什么牌子好(如何挑选女士手表?)