我想将默认的帖子永久链接结构从(example.com/post-name)更改为(example.com/author_firstname-author_lastname/post-name)。
我尝试添加一个新的重写标记,我可以在自定义永久链接结构中使用该标记在URL中使用作者的名字和姓氏,但它不起作用(404错误页面)。
add_filter('post_link', 'pauthor_permalink', 10, 3);
add_filter('post_type_link', 'pauthor_permalink', 10, 3);
function pauthor_permalink($permalink, $post_id, $leavename) {
add_rewrite_tag( '%pauthor%', '(.+)', 'pauthor=' );
if (strpos($permalink, '%pauthor%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get Author Data
$post_author = get_post_field( 'post_author', $post->ID );
$user_info = get_userdata($post_author);
$first_name = $user_info->first_name;
$last_name = $user_info->last_name;
$pauthor = $first_name.'-'.$last_name;
return str_replace('%pauthor%', $pauthor, $permalink);
}
任何帮助!?
答案 0 :(得分:0)
更改wordpress中的固定链接结构可以在没有任何类型的PHP的情况下完成。
请参阅设置>固定链接
https://codex.wordpress.org/Settings_Permalinks_Screen
您要查找的结构似乎是/%author%/%postname%/
可在此处找到更多标签: https://codex.wordpress.org/Using_Permalinks#Structure_Tags
您可以通过使用'rewrite' => true
创建新分类法来创建自定义代码,例如:
add_action( 'init', 'my_rating_init' );
function my_rating_init() {
if ( ! is_taxonomy( 'rating' ) ) {
register_taxonomy(
'rating',
'post',
array(
'hierarchical' => FALSE,
'label' => __( 'Rating' ),
'public' => TRUE,
'show_ui' => TRUE,
'query_var' => 'rating',
'rewrite' => true
)
);
}
}
来源:https://wordpress.stackexchange.com/questions/168946/add-more-structure-tag-to-permalink