게시물의 URL 접두사 WordPress
WordPress 엔진에 대한 웹사이트가 있습니다.그리고 투고 URL을 http://website.com/blog/post-name/ 또는 http://website.com/blog/categ-name/post-name/처럼 만들고 싶습니다.그 외는 모두 http://website.com/page-name/처럼 표시됩니다.페이지가 아닌 모든 투고에 대해 URL에 접두사 'blog'를 추가하려고 합니다.permalink 설정은 /%postname%/ 입니다./blog/%postname%/를 입력하면 내 사이트의 모든 URL에 'blog' 접두사가 붙습니다:( WordPress 관리 백엔드에서 솔루션을 찾을 수 없고 이에 사용할 수 있는 플러그인을 찾을 수 없습니다.어떤 도움이라도 감사합니다.
1) 마지막에 이 리라이트 추가function.php
function add_rewrite_rules( $wp_rewrite )
{
$new_rules = array(
'blog/(.+?)/?$' => 'index.php?post_type=post&name='. $wp_rewrite->preg_index(1),
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'add_rewrite_rules');
function change_blog_links($post_link, $id=0){
$post = get_post($id);
if( is_object($post) && $post->post_type == 'post'){
return home_url('/blog/'. $post->post_name.'/');
}
return $post_link;
}
add_filter('post_link', 'change_blog_links', 1, 3);
2) [설정(Settings)]> [퍼멀링크(Permalinks)]순서로 선택하여Save Changes
.
카테고리를 만듭니다.blog
퍼머링크 구조를 사용하여/%category%/%postname%/
.
나는 이렇게 했다:
add_action( 'init', 'redefine_post', 1 );
function redefine_post() {
register_post_type( 'post', array(
'labels' => array(
'name_admin_bar' => _x( 'Post', 'add new on admin bar' ),
),
'public' => true,
'_builtin' => false,
'_edit_link' => 'post.php?post=%d',
'capability_type' => 'post',
'map_meta_cap' => true,
'hierarchical' => false,
'rewrite' => array( 'slug' => 'blog' ),
'query_var' => false,
'has_archive' => true,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
) );
}
커스텀 투고 타입(약간 귀찮음)을 작성하는데, 투고 타입을 덮어쓰고, 투고와 함께 동작합니다.
더 좋은 방법이 있었으면 좋겠어! (그렇지 않으면 퍼멀링크만 바꾸면 모든 것 앞에 /blog/가 나옵니다.)
[ Settings ]> [ Permalinks ]으로 이동하여 [Custom Structure]를 선택하고 이 필드를 "/blog/%postname%/"로 변경합니다.투고에는 /blog/ 접두사가 붙지만 페이지에는 붙지 않습니다.Wordpress 5.2.2에서 테스트했습니다.
function golden_oak_web_design_blog_generate_rewrite_rules( $wp_rewrite ) {
$new_rules = array(
'(([^/]+/)*blog)/page/?([0-9]{1,})/?$' => 'index.php?pagename=$matches[1]&paged=$matches[3]',
'blog/([^/]+)/?$' => 'index.php?post_type=post&name=$matches[1]',
'blog/[^/]+/attachment/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]',
'blog/[^/]+/attachment/([^/]+)/trackback/?$' => 'index.php?post_type=post&attachment=$matches[1]&tb=1',
'blog/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
'blog/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
'blog/[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&attachment=$matches[1]&cpage=$matches[2]',
'blog/[^/]+/attachment/([^/]+)/embed/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
'blog/[^/]+/embed/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
'blog/([^/]+)/embed/?$' => 'index.php?post_type=post&name=$matches[1]&embed=true',
'blog/[^/]+/([^/]+)/embed/?$' => 'index.php?post_type=post&attachment=$matches[1]&embed=true',
'blog/([^/]+)/trackback/?$' => 'index.php?post_type=post&name=$matches[1]&tb=1',
'blog/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&name=$matches[1]&feed=$matches[2]',
'blog/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&name=$matches[1]&feed=$matches[2]',
'blog/page/([0-9]{1,})/?$' => 'index.php?post_type=post&paged=$matches[1]',
'blog/[^/]+/page/?([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&paged=$matches[2]',
'blog/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&paged=$matches[2]',
'blog/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&name=$matches[1]&cpage=$matches[2]',
'blog/([^/]+)(/[0-9]+)?/?$' => 'index.php?post_type=post&name=$matches[1]&page=$matches[2]',
'blog/[^/]+/([^/]+)/?$' => 'index.php?post_type=post&attachment=$matches[1]',
'blog/[^/]+/([^/]+)/trackback/?$' => 'index.php?post_type=post&attachment=$matches[1]&tb=1',
'blog/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
'blog/[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=post&attachment=$matches[1]&feed=$matches[2]',
'blog/[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?post_type=post&attachment=$matches[1]&cpage=$matches[2]',
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'golden_oak_web_design_blog_generate_rewrite_rules' );
function golden_oak_web_design_update_post_link( $post_link, $id = 0 ) {
$post = get_post( $id );
if( is_object( $post ) && $post->post_type == 'post' ) {
return home_url( '/blog/' . $post->post_name );
}
return $post_link;
}
add_filter( 'post_link', 'golden_oak_web_design_update_post_link', 1, 3 );
언급URL : https://stackoverflow.com/questions/7285532/url-prefix-for-posts-wordpress
'source' 카테고리의 다른 글
Jackson을 사용하여 오버로드된 메서드를 사용하여 JSON을 개체로 역직렬화 (0) | 2023.03.22 |
---|---|
GSON을 사용하여 목록을 JSON 개체로 변환하는 방법 (0) | 2023.03.22 |
htaccess의 Apache Rewrite Rule - 루트가 끊어졌습니다. (0) | 2023.03.22 |
WordPress의 CSS 배경 이미지 (0) | 2023.03.22 |
local스토리지 vs session스토리지 vs 쿠키 (0) | 2023.03.22 |