Làm thế nào để hủy bỏ Slug từ Custom Post Type trong WordPress nếu không có Plugin?

Hôm nay trong bài viết này, chúng tôi sẽ hướng dẫn bạn làm thế nào để loại bỏ slug từ loại bài tùy chỉnh trong WordPress mà không cần plugin.

Làm thế nào để hủy bỏ Slug từ Custom Post Type trong WordPress nếu không có Plugin?

Tôi đã cố gắng để loại bỏ các slug từ loại bài tùy chỉnh bởi vì tôi muốn slug của tôi là ngắn hơn.Cách cũ để loại bỏ slug trong  tùy chỉnh của WordPress bằng cách sử dụng đoạn mã sau.

Hãy xem nó, bây giờ nó không còn hoạt động trong các phiên bản WordPress gần đây nhất sau 3.5 lần cài đặt.

  
'rewrite''    => array( 'slug' => true, 'with_front' => true),

Thay đổi dòng trên thành

rewrite'   => array( 'slug' => false, 'with_front' => false),

Nó có một vấn đề là nó sẽ mang lại xung đột nếu slug của bài tùy chỉnh loại và trang hoặc bài có thể trở thành giống nhau.

Vì vậy, những gì chúng tôi sẽ làm là đầu tiên loại bỏ các slug từ permalink bằng cách thêm đoạn mã duy nhất trong functions.php.

Hướng dẫn  hủy bỏ Slug từ Custom Post Type

function iz_remove_cpt_slug( $post_link, $post ) {
    if ( 'your_custom_posttype' === $post->post_type && 'publish' === $post->post_status ) {
        $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
    }
    return $post_link;
}
add_filter( 'post_type_link', 'iz_remove_cpt_slug', 10, 2 );

Và bây giờ nếu bạn truy cập vào trang, bạn sẽ nhận được Page Not Found Error  .

Bạn bình tĩnh còn nữa!

Để làm cho nó hoạt động, chúng ta cần thêm một số dòng mã để yêu cầu WordPress xử lý loại bài đăng tùy chỉnh như trang hoặc bài đăng. Để thực hiện điều này, hãy thêm các dòng mã này vào functions.php để làm cho nó hoạt động cho kiểu bài đăng tùy chỉnh.

function iz_add_cpt_post_names_to_main_query( $query ) {
    // Bail if this is not the main query.
    if ( ! $query->is_main_query() ) {
        return;
    }
    // Bail if this query doesn't match our very specific rewrite rule.
    if ( ! isset( $query->query['page'] ) || 2 !== count( $query->query ) ) {
        return;
    }
    // Bail if we're not querying based on the post name.
    if ( empty( $query->query['name'] ) ) {
        return;
    }
    // Add CPT to the list of post types WP will include when it queries based on the post name.
    $query->set( 'post_type', array( 'post', 'page', 'your_custom_posttype' ) );
}
add_action( 'pre_get_posts', 'iz_add_cpt_post_names_to_main_query' );

Bây giờ hãy vào Settings -> Permalinks và lưu thay đổi mà không thực hiện bất kỳ thay đổi nào khác trong phần Permalinks và bạn xem thử bài viết … nếu còn lỗi hãy liên hệ với chúng tôi giải quyết vấn đề này..

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x