맞춤 게시물 유형 단일 페이지에서 404 오류가 반환 됨


17

이라는 맞춤 게시물 유형이 slide있습니다. 내용과 일부 사용자 정의 필드가 있습니다. 사용자가 슬라이드 단일 페이지 링크를 클릭하면 WPsingle.php테마 또는 single-slide.php테마 를 표시하기를 원합니다 . 내가 가진 문제 는 단일 슬라이드 페이지를보고 싶을 때 WP에서 404 오류가 발생 한다는 것입니다 .

내 코드는 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' );

답변:


41

맞춤 게시물 유형을 등록 할 때 publicly_queryable인수를 설정해야 true합니다.

참고 : 추가 flush_rewrite_rules(), 페이지를 한 번 또는 두 번 새로 고치고 즉시 제거하십시오. flush_rewrite_rules()코덱스와 같은 조항에 따르지 않는 한 보관 하지 않아야 합니다.

이것은 비용이 많이 드는 작업이므로 꼭 필요한 경우에만 사용해야합니다


1
와우, 여기도 효과가있었습니다. 그것은 완전히 명백하지 않은 것이었다. 감사합니다!
Toby Deshane

나를 위해 일했다! 감사!
JamesHoux

예! 마침내 두 가지를 모두 한 후에 효과가있었습니다.
Eric

16

대시 보드-> 설정-> 영구 링크 페이지에서 다시 쓰기 규칙을 비 웁니다. 저장 버튼을 클릭 한 다음 슬라이드 세부 사항 페이지를 확인하십시오. 지금 작동합니다. 그렇지 않으면 함수 에이 코드 flush_rewrite_rules()를 작성할 수 create_slide_post_type()있습니다. 코덱스 참조


2
Permlinks에서 저장 버튼을 클릭하면 나에게 도움이되었습니다. 사이트를 프로덕션 서버로 옮긴 후 모든 사용자 지정 게시물 유형 링크가 끊어졌습니다. 이것은 그것을 고쳤다. 감사!
cbloss793

+1 Permalinks에서 저장을 클릭해도 나에게 도움이되었습니다.
MarsAndBack

영구 링크를 저장하면 작동합니다. 그러나 프로덕션 코드 (예 : inside )로 호출 flush_rewrite_rules()한 후 추가하지 마십시오 . 플러그인 게시 후크 또는 옵션 값을 사용하여 새 게시물 유형을 추가했는지 확인하십시오.register_post_type()create_slide_post_type
Philipp

6

영구 링크를 새로 고칩니다. 관리자-> 설정-> 영구 링크로 이동하여 저장을 누르십시오. 영구 링크를 새로 고치며 특히 다시 쓰기를 변경하는 경우 도움이되어야합니다 ( 'rewrite'=> array ( 'slug'=> 'slide'))


1

가상 호스트 아파치에서 다음을 설정해야합니다.

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

그런 다음 wp-admin-> settings-> permalinks와 같이 영구 링크를 새로 고치십시오. 그것은 나를 위해 일했다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.