自定义帖子类型单页返回404错误


17

我有一个名为的自定义帖子类型slide。它具有内容和一些自定义字段。我希望WP在用户单击幻灯片单页链接时显示single.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' );

Answers:


41

注册自定义帖子类型时,应将publicly_queryable参数设置为true

注意:添加flush_rewrite_rules(),刷新页面一次或两次,然后立即将其删除。flush_rewrite_rules()除非遵守食典中的规定,否则您不应保留。

这是一项昂贵的操作,因此仅应在绝对必要时使用


1
哇,这在这里也起作用。那是完全不明显的。谢谢!
Toby Deshane

为我工作!谢谢!
JamesHoux19年

是! 最终,在两者都起作用之后。
埃里克

16

从仪表板->设置->固定链接页面刷新重写规则。单击保存按钮,然后检查您的幻灯片详细信息页面。现在可以使用了。否则,您可以flush_rewrite_rules()create_slide_post_type()函数中编写此代码。参见法典


2
单击永久链接中的保存按钮对我有用。将网站移至生产服务器后,所有自定义帖子类型链接都断开了。这样就解决了。谢谢!
cbloss793

+1只需单击“永久链接”中的“保存”对我也有用。
MarsAndBack

保存永久链接有效。但是,请不要在生产代码中调用flush_rewrite_rules()之后register_post_type()(即在内部create_slide_post_type)添加。使用插件激活挂钩或选项值来确定您添加了新的帖子类型
Philipp

6

刷新您的固定链接。转到管理->设置->永久链接,然后点击保存。它会刷新您的永久链接,应该会有所帮助,尤其是在您要更改重写的情况下('rewrite'=> array('slug'=>'slide'),)


1

您应该在virtualhost apache中设置以下内容:

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

然后,刷新您的永久链接:wp-admin-> settings-> permalinks。那对我有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.