我有一个名为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' );


#1 楼

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

请注意:添加flush_rewrite_rules(),刷新页面一次或两次,并立即删除它。除非按照法典中的规定,否则您不应保留flush_rewrite_rules()


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


评论


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

– Toby Deshane
19年1月28日在19:02

为我工作!谢谢!

–JamesHoux
19年6月10日在18:58

是!最终,两者都奏效了。

–埃里克
19年7月24日在13:42

flush_rewrite_rules()对我来说很不错-不错!

–詹姆斯·库欣
20年11月2日,15:13

您可以简单地尝试转到“设置”>“永久链接”,然后单击“保存”而不更改任何内容。如果您不想编辑代码,而正在寻找“希望”快速修复

–乔纳斯·梅尔赫(Jonas Merhej)
20/12/2在10:11

#2 楼

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

评论


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

–cbloss793
17-10-11在17:29

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

– MarsAndBack
18年8月12日在0:52

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

– Philipp
19年6月14日在7:31

#3 楼

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

评论


为我做了吗-谢谢

– cljk
20-04-27在9:48

#4 楼

您应该在虚拟主机apache中设置以下内容:

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


然后刷新您的永久链接:wp-admin-> settings-> permalinks。
我。