-
wordpress slug 재정의하기워드프레스 2023. 11. 21. 09:22
워드프레스가 domain.com/author/user 형태로 서비스하는 author.php 이 너무 느리다.
기존의 author.php를 사용할 경우 WordPress Core 쿼리가 3초정도 걸린다.
WordPress Core 쿼리만... 그래서
domain.com/journalist/user 서비스하게 커스텀 페이지를 만들려고 하는데,
워드프레스 설정에 고유주소는 바꿀 수 없다.
결국
url을 domain.com/author/user => domain.com/ journalist/user 서비스하고
journalist/user => journalist/?user=janggos 작동하도록 해야한다.
페이징도 워드프레스 페이징을 사용하지 않고 따로 개발하여 ajax로
구현하기로 할때... journalist/user 자동으로 안된다...
이를 위해 functions.php 에 아래와 같은 코드를 추가하자.
----------------------------------------------- 아래 -----------------------------------------------
https://test.com/journalist/username
https://test.com/journalist/username/
https://test.com/journalist/username/page/1
https://test.com/journalist/username/page/2
https://test.com/journalist/username/page/3
이런 패턴일때.
1.주소창에 변동이 없어야 합니다.
2. username 은 변경될 수 있구요. 꼭 있어야 합니다.
3. page 이하는 있을 수도 있고, 없을 수도 있습니다.
page 가 존재하면 반듯이 page/수자 형태여야 합니다.
4. journalist.php 파일에서 username 과 page의 값을 사용해야 합니다.
add_action( 'init', function() {
add_rewrite_rule(
'journalist/([a-z0-9-]+)(/page/(\d+))?\/?$',
'index.php?journalist=$matches[1]&page=$matches[3]',
'top'
);
} );
add_filter( 'query_vars', function( $query_vars ) {
$query_vars[] = 'journalist';
$query_vars[] = 'page';
return $query_vars;
} );
add_filter( 'template_include', function( $template ) {
if ( get_query_var( 'journalist' ) == false || get_query_var( 'journalist' ) == '' ) {
return $template;
}
return get_stylesheet_directory() . '/journalist.php';
} );journalist.php 파일 내에서
$journalist_username = get_query_var('journalist');
$page_number = get_query_var('page');
echo "<hr>";
echo "username: " . $journalist_username . "<br>";
echo "page: " . $page_number;이렇게 사용할 수 있다.
-----------------------------------------------------------------------------------------------------
'워드프레스' 카테고리의 다른 글
워드프레스 코멘트 폭주 방지 (0) 2024.03.20 [1원팁] 워드프레스에서 문단을 <p></p>감싸주는 함수 (0) 2024.01.11 Building a WordPress Caching Plugin from Scratch - Full Advanced TutorialArne De Belser (0) 2023.11.02 The WordPress Page Lifecycle (0) 2023.04.18 Build a Custom WordPress User Flow, Part 3: Password Reset (0) 2023.04.13