programing

wordpress에 부모 게시물이 있는 모든 자녀 사용자 지정 게시물을 가져오도록 permalink를 설정하려면 어떻게 해야 합니까?

bestprogram 2023. 3. 23. 23:16

wordpress에 부모 게시물이 있는 모든 자녀 사용자 지정 게시물을 가져오도록 permalink를 설정하려면 어떻게 해야 합니까?

커스텀 투고 타입의 부모-자녀 관계를 작성합니다.

범용 : www.example.com/parent/parent_post

샘플 : www.example.com/projects/project-one

위의 URL에서는 부모 투고는 커스텀 투고 타입이며 부모 투고는 싱글 투고입니다.부모에게 모든 투고와 싱글 투고를 각각 archive-parent.php와 single-parent.php로 표시할 수 있습니다.

앞서 말씀드린 바와 같이, 저는 부모 아이디로 'post_parent'를 저장하는 자녀 포스트와 부모-자녀 관계를 만듭니다.

범용 : www.example.com/child/parent_post/child_post

샘플 : www.example.com/project_article/project-one/first-article

또, 특정의 자투리 투고에 대해서는, URL은 위와 같습니다.

아래 코드는 특정 아동용 포스트를 받기 위한 것입니다.잘 되고 있어요.

function my_add_rewrite_rules() {
    add_rewrite_tag('%child%', '([^/]+)', 'child=');
    add_permastruct('child', 'child/%parent%/%child%', false);
    add_rewrite_rule('^child/([^/]+)/([^/]+)/?','index.php?child=$matches[2]','top');
}
add_action( 'init', 'my_add_rewrite_rules' );

function my_permalinks($permalink, $post, $leavename) {
    $post_id = $post->ID;
    if($post->post_type != 'child' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft')))
        return $permalink;
    $parent = $post->post_parent;
    $parent_post = get_post( $parent );
    $permalink = str_replace('%parent%', $parent_post->post_name, $permalink);
    return $permalink;
}
add_filter('post_type_link', 'my_permalinks', 10, 3);

범용 : www.example.com/child/parent_post

샘플 : www.example.com/project_article/project-one

이제 위의 URL과 같이 부모 포스트가 있는 모든 아이 포스트를 원합니다.

저는 워드프레스 가이드는 처음입니다.

가정하다parent부모 커스텀 투고 타입으로,child자녀용 커스텀 투고 타입으로, 다음과 같은 자녀용 투고 URL이 필요합니다.http://www.example.com/parent/parent-post/child/child-post대신http://www.example.com/child/parent-post/child-post.

변경하다my_add_rewrite_rules()다음과 같이 기능합니다.

function my_add_rewrite_rules() {
    add_rewrite_tag('%child%', '([^/]+)', 'child=');
    add_permastruct('child', '/parent/%parent%/child/%child%', false);
    add_rewrite_rule('^parent/([^/]+)/child/([^/]+)/?','index.php?child=$matches[2]','top');
}
add_action( 'init', 'my_add_rewrite_rules' );

업데이트 후 '설정' > '퍼멀링크'를 통해 퍼머링크를 플러시하는 을 잊지 마십시오.

언급URL : https://stackoverflow.com/questions/52144868/how-to-set-permalink-to-fetch-all-children-custom-posts-with-parent-post-in-word