WordPress에서 작성자 기반을 제거하는 방법
WordPress의 표준 작성자 링크는 다음과 같습니다.example.com/author/johnsmith
다음을 제거하고 싶습니다.author/
사용자 이름이 루트에 있도록 URL의 일부입니다.예:example.com/johnsmith
저는 제 사이트에서 페이지 작성을 제어하여 페이지와 작성자 이름이 충돌할 가능성이 없습니다.
지금까지 WP Snipet에서 다음 솔루션을 시도했지만 더 이상 작동하지 않는 것 같습니다.
add_filter('author_rewrite_rules', 'no_author_base_rewrite_rules');
function no_author_base_rewrite_rules($author_rewrite) {
global $wpdb;
$author_rewrite = array();
$authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users");
foreach($authors as $author) {
$author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]';
$author_rewrite["({$author->nicename})/?$"] = 'index.php?author_name=$matches[1]';
}
return $author_rewrite;
}
add_filter('author_link', 'no_author_base', 1000, 2);
function no_author_base($link, $author_id) {
$link_base = trailingslashit(get_option('home'));
$link = preg_replace("|^{$link_base}author/|", '', $link);
return $link_base . $link;
}
이것에 대한 효과적인 해결책이 있는지 아는 사람이 있습니까?
저는 이 결합된 솔루션을 테스트했지만 영구 링크를 재생성하기 전에는 작동하지 않았습니다.brasfolio에서 설명한 대로 대시보드의 영구 링크 페이지에 저장을 클릭하면 됩니다.
add_filter('author_rewrite_rules', 'no_author_base_rewrite_rules');
function no_author_base_rewrite_rules($author_rewrite) {
global $wpdb;
$author_rewrite = array();
$authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users");
foreach($authors as $author) {
$author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]';
$author_rewrite["({$author->nicename})/?$"] = 'index.php?author_name=$matches[1]';
}
return $author_rewrite;
}
if( !is_admin() ) {
add_action('init', 'author_rewrite_so_22115103');
}
function author_rewrite_so_22115103() {
global $wp_rewrite;
if( 'author' == $wp_rewrite->author_base ) $wp_rewrite->author_base = null;
}
코드가 정상인 것 같습니다.이러한 변경사항을 반영하기 위해 수동으로 영구 링크 구조를 플러시합니다.
1) Settings -> Permalinks -> choose default -> Save
2) Revert the settings to original.
시도: RedirectMatch 301^/author/(.+)$ http://www.yourblog.com/$1
이것은 당신의 .htaccess에 들어갈 것입니다.
또한 피드를 리디렉션하려면 다른 유사한 두 개 근처에 이 값을 추가합니다.
$author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]';
퍼멀링크 구조를 새로 고쳐야 하는 것 같은데, 매번 누군가가 새 규칙을 등록합니다.
따라서 다음을 사용하여 자동으로 플러시합니다.
$wp_rewrite->flush_rules();
당신의 기능에.php 파일.
저도 같은 문제가 있었지만 이것으로 문제가 없는 것 같습니다.하지만 여전히 페이지와 게시물 이름에 대한 충돌 문제가 있습니다.
이 질문은 이 질문과 유사합니다...
이런 거 할 수 있어요.이건 당신이 원했던 거나 다름없어요
이게 효과가 있기를...
언급URL : https://stackoverflow.com/questions/22115103/how-to-remove-author-base-in-wordpress
'programing' 카테고리의 다른 글
python 사전을 csv 파일로 작성하려면 어떻게 해야 합니까? (0) | 2023.06.18 |
---|---|
C의 for(;;) 루프에서 여러 변수를 선언하려면 어떻게 해야 합니까? (0) | 2023.06.18 |
Firebase 인증 사용자 UID를 가져올 수 있는 방법이 있습니까? (0) | 2023.06.18 |
Firebase에서 사용자 지정 하위 도메인을 만들려면 어떻게 해야 합니까? (0) | 2023.06.18 |
Wordpress Woocommerce 사용자 지정 배송 필드(AJAX)에서 값 가져오기 (0) | 2023.06.13 |