Loại bài đăng tùy chỉnh một trang trả về lỗi 404


17

Tôi có một loại bài tùy chỉnh được gọi là slide. Nó có nội dung và một số lĩnh vực tùy chỉnh. Tôi muốn WP hiển thịsingle.php chủ đề hoặc single-slide.phpchủ đề khi người dùng nhấp vào liên kết trang đơn slide. vấn đề tôi gặp phải là WP ném lỗi 404, khi tôi muốn xem trang slide đơn.

đây là mã của tôi trong functions.php:

function create_slide_post_type() {
    $labels = array(
        'name'               => _x( 'اسلایدها', 'i2sa' ),
        'singular_name'      => _x( 'اسلاید', 'i2sa' ),
        'menu_name'          => _x( 'اسلایدها', 'i2sa' ),
        'name_admin_bar'     => _x( 'اسلاید', 'i2sa' ),
        'add_new'            => _x( 'افزودن', 'i2sa' ),
        'add_new_item'       => __( 'افزودن اسلاید جدید', 'i2sa' ),
        'new_item'           => __( 'اسلاید جدید', 'i2sa' ),
        'edit_item'          => __( 'ویرایش اسلاید', 'i2sa' ),
        'view_item'          => __( 'نمایش اسلاید', 'i2sa' ),
        'all_items'          => __( 'همه اسلایدها', 'i2sa' ),
        'search_items'       => __( 'جستجوی اسلایدها', 'i2sa' ),
        'parent_item_colon'  => __( 'اسلایدهای مادر:', 'i2sa' ),
        'not_found'          => __( 'اسلایدی پیدا نشد.', 'i2sa' ),
        'not_found_in_trash' => __( 'اسلایدی در زباله دان پیدا نشد.', 'i2sa' )
    );

    $args = array(
        'labels'             => $labels,
        'description'        => "اسلایدهای شرکت i2sa",
        'public'             => true,
        'exclude_from_search'=> true,
        'publicly_queryable' => false,
        'show_in_nav_menus'  => false,
        'menu_icon'          => 'dashicons-images-alt2',
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'slide' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
    );
    register_post_type( 'slide', $args );
    flush_rewrite_rules();
}
add_action( 'init', 'create_slide_post_type' );

Câu trả lời:


41

Bạn nên đặt publicly_queryableđối số của mình truekhi đăng ký loại bài đăng tùy chỉnh.

LƯU Ý : Thêm flush_rewrite_rules(), làm mới trang một hoặc hai lần và BỎ L IT NGAY LẬP TỨC. Bạn KHÔNG NÊN giữ flush_rewrite_rules()trừ khi theo các quy định như trong bộ luật.

Đây là một hoạt động đắt tiền vì vậy nó chỉ nên được sử dụng khi thực sự cần thiết


1
Oh wow, điều đó cũng làm việc ở đây. Điều đó là hoàn toàn không rõ ràng. Cảm ơn bạn!
Toby Deshane

Đã làm cho tôi! Cảm ơn!
JamesHoux

Đúng! Cuối cùng sau khi làm cả hai nó đã làm việc.
Eric

15

Xóa quy tắc viết lại từ bảng điều khiển -> Cài đặt-> Trang Permalink. Nhấp vào nút lưu và sau đó kiểm tra trang chi tiết slide của bạn. Nó sẽ hoạt động ngay bây giờ. Nếu không, bạn có thể viết mã này flush_rewrite_rules()trong create_slide_post_type()chức năng của bạn . Xem Codex


2
Nhấp vào nút lưu trong Permlinks làm việc cho tôi. Sau khi tôi chuyển trang web đến một máy chủ sản xuất, tất cả các liên kết loại bài đăng tùy chỉnh đã bị phá vỡ. Điều này đã sửa nó. Cảm ơn!
cbloss793

+1 Chỉ cần nhấp vào lưu trong Permalinks cũng có hiệu quả đối với tôi.
MarsAndBack

Lưu các permalinks hoạt động. Nhưng vui lòng không thêm flush_rewrite_rules()sau register_post_type()các cuộc gọi trong mã sản xuất (tức là bên trong create_slide_post_type). Sử dụng móc kích hoạt plugin hoặc giá trị tùy chọn để xác định rằng bạn đã thêm loại bài đăng mới
Philipp

6

Làm mới permalinks của bạn. Chuyển đến Quản trị viên-> Cài đặt-> Permalinks và nhấn Lưu. Nó làm mới permalinks của bạn và sẽ giúp ích, đặc biệt nếu bạn đang thay đổi viết lại ('viết lại' => mảng ('slug' => 'slide'),)


1

Bạn nên đặt như sau trong apache virtualhost của bạn:

    <Directory /var/www/html/wordpress>
            AllowOverride All
    </Directory>

Sau đó, làm mới permalinks của bạn: wp-admin-> settings-> permalinks. Điều đó đã làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.