워드프레스의 기본 게시물을 프로그래밍 방식으로 변경하는 방법은?
Wordpress의 백엔드에서 기본값 사용http://localhost/sitename/example-post/
영구 링크를 만들기 위한 값입니다.
사용자 지정 게시물 유형에 대해 사용자 지정 슬러그를 다음과 같이 정의했습니다.services
예:
register_post_type( 'service',
array(
'labels' => array(
'name' => __( 'Services' ),
'singular_name' => __( 'Service' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array(
'slug' => 'services',
'with_front' => true
),
'supports' => array(
'title',
'editor',
'excerpt',
'thumbnail'
),
'taxonomies' => array( 'category' ),
)
);
서비스/포스트 네임을 생성합니다.
또한 이 후크를 사용하여 사용자 정의 페이지를 만들고 링크별 사용자 정의 페이지를 만듭니다.
function custom_base_rules() {
global $wp_rewrite;
$wp_rewrite->page_structure = $wp_rewrite->root . '/page/%pagename%/';
}
add_action( 'init', 'custom_base_rules' );
페이지/포스트 이름을 만듭니다.
이제 제가 해야 할 일은 일반적인 워드프레스 게시물을 위한 다른 사용자 정의 퍼멀링크 경로를 만드는 것입니다.
그래서 결과 세계는 포스트 타입을 위한 것입니다.post
:
우편/우편 이름
퍼멀 링크를 처리하는 기본 방법을 이미 정의했기 때문에 이에 대해 백업된 것을 사용할 수 없습니다.이미 사용자 지정 게시물 유형 및 페이지의 경로를 다시 작성했습니다.
정상을 다시 작성하려면 어떻게 해야 합니까?post
Wordpress에서 프로그래밍 방식으로 permal 링크 경로 유형을 게시하시겠습니까?
당신은 그것을 두 단계로 할 필요가 있습니다.
먼저 다음을 사용하여 다시 쓰기 사용'with_front' => true
빌트인 포스트 등록용.
add_filter(
'register_post_type_args',
function ($args, $post_type) {
if ($post_type !== 'post') {
return $args;
}
$args['rewrite'] = [
'slug' => 'posts',
'with_front' => true,
];
return $args;
},
10,
2
);
이 URL은 다음과 같습니다.http://foo.example/posts/a-title
에서 생성된 링크가 잘못되었습니다.
기본 제공 게시물에 대한 사용자 지정 퍼멀링크 구조를 강제로 적용하여 링크를 수정할 수 있습니다.
add_filter(
'pre_post_link',
function ($permalink, $post) {
if ($post->post_type !== 'post') {
return $permalink;
}
return '/posts/%postname%/';
},
10,
2
);
https://github.com/WordPress/WordPress/blob/d46f9b4fb8fdf64e02a4a995c0c2ce9f014b9cb7/wp-includes/link-template.php#L166 을 참조하십시오.
게시물은 기본 퍼멀링크 구조를 사용해야 하며, 페이지 또는 사용자 지정 게시물 유형과 같은 방식으로 다시 쓰기 개체에 특별한 항목이 없습니다.기본 구조를 프로그래밍 방식으로 변경하려면 후크에 이와 같은 것을 추가할 수 있습니다.
$wp_rewrite->permalink_structure = '/post/%postname%';
당신이 무슨 말을 하는지 잘 모르겠어요
퍼멀 링크를 처리하는 기본 방법을 이미 정의했기 때문에 이에 대해 백업된 것을 사용할 수 없습니다.이미 사용자 지정 게시물 유형 및 페이지의 경로를 다시 작성했습니다.
게시물을 제외한 모든 곳에서 퍼멀 링크의 기본 동작을 재정의하는 것처럼 들리므로 기본값을 변경하면 게시물에만 영향을 줄 수 있습니다.
그permalink_structure
젠틀맨 맥스가 제안한 재산은 나에게 효과가 없었습니다.하지만 저는 set_permalink_structure()라는 작동하는 메서드를 찾았습니다.아래 코드 예제를 참조하십시오.
function custom_permalinks() {
global $wp_rewrite;
$wp_rewrite->page_structure = $wp_rewrite->root . '/page/%pagename%/'; // custom page permalinks
$wp_rewrite->set_permalink_structure( $wp_rewrite->root . '/post/%postname%/' ); // custom post permalinks
}
add_action( 'init', 'custom_permalinks' );
언급URL : https://stackoverflow.com/questions/52427918/how-to-change-wordpress-default-posts-permalinks-programmatically
'programing' 카테고리의 다른 글
메인 클래스에서 Spring-Boot @Autowired가 null이 됩니다. (0) | 2023.07.20 |
---|---|
<< 고객명 >>님과 !=님의 차이 (0) | 2023.07.20 |
Oracle SQL 문 내에서 컬렉션을 사용하는 방법 (0) | 2023.07.20 |
메일 수신 클라이언트 없이 Mandrill 사용자 지정 발송 도메인을 확인하려면 어떻게 해야 합니까? (0) | 2023.07.20 |
오라클에서 각 그룹에 대한 최신 행 선택 (0) | 2023.07.20 |