首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义邮政状态未在“自定义邮政类型”全视图中显示

自定义邮政状态未在“自定义邮政类型”全视图中显示
EN

WordPress Development用户
提问于 2017-02-11 18:56:25
回答 2查看 2.7K关注 0票数 3

我已经为我们的WP网站创建了一个简单的插件,允许我们进入我们的产品,我们发送。

为此,我创建了一个新的Post类型,名为'order_packing‘,在这两个新的Post状态中:'In Packing','Sent’。

我遇到的问题是,这份清单正确地显示了所有(2)项中的装箱单,但没有列出装箱单。如果单击“已发送”状态,则列表中显示了这两种状态。因此,我的问题是数据在那里,但它们没有显示在ALL选项卡下。

下面是创建Post类型的代码,这一切都工作得很完美

代码语言:javascript
复制
enter code here    register_post_type( 'order_packing',
    array(
        'labels'              => array(
        'name'                  => __( 'Order Packing', 'tgplugin' ),
        'singular_name'         => _x( 'Order Packing', 'order_packing post type singular name', 'tgplugin' ),
        'add_new'               => __( 'Add Packing List', 'tgplugin' ),
        'add_new_item'          => __( 'Add Packing List', 'tgplugin' ),
        'edit'                  => __( 'Edit', 'tgplugin' ),
        'edit_item'             => __( 'Edit Packing List', 'tgplugin' ),
        'new_item'              => __( 'New Packing List', 'tgplugin' ),
        'view'                  => __( 'View Packing List', 'tgplugin' ),
        'view_item'             => __( 'View Packing List', 'tgplugin' ),
        'search_items'          => __( 'Search Packing Lists', 'tgplugin' ),
        'not_found'             => __( 'No Packing Lists found', 'tgplugin' ),
        'not_found_in_trash'    => __( 'No Packing Lists found in trash', 'tgplugin' ),
        'parent'                => __( 'Parent Packing List', 'tgplugin' ),
        'menu_name'             => _x( 'Stock Packing List', 'Admin menu name', 'tgplugin' ),
        'filter_items_list'     => __( 'Filter Packing Lists', 'tgplugin' ),
        'items_list_navigation' => __( 'Packing List navigation', 'tgplugin' ),
        'items_list'            => __( 'Packing Lists', 'tgplugin' ),
    ),
        'description'         => __( 'This is where Packing Lists are stored.', 'tgplugin' ),
        'public'              => false,
        'show_ui'             => true,
        'capability_type'     => 'packing_list',
        'map_meta_cap'        => true,
        'publicly_queryable'  => false,
        'exclude_from_search' => true,
        'show_in_menu'        => true,
        'hierarchical'        => false,
        'show_in_nav_menus'   => false,
        'menu_position'       => 100,
        'rewrite'             => false,
        'query_var'           => false,
        'supports'            => array( 'title', 'comments', 'custom-fields' ),
        'has_archive'         => false,
    )
);

以下是自定义Post类型的自定义状态。

代码语言:javascript
复制
 register_post_status( 'inpacking', array(
    'label'                     => _x( 'In Packing', 'Order packing' ),
    'public'                    => false,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'In Packing <span class="count">(%s)</span>', 'In Packing <span class="count">(%s)</span>' ),
 ) );

 register_post_status( 'sent', array(
    'label'                     => _x( 'Sent', 'Order packing' ),
    'public'                    => false,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'Sent <span class="count">(%s)</span>', 'Sent <span class="count">(%s)</span>' ),
 ) );

最后,这里有两个图片显示了这个问题。

我在抓我的头,搜索了一下,我确实找到了这篇文章,但没有答案。

https://stackoverflow.com/questions/29434046/wordpress-posts-with-custom-status-need-to-show-in-all-view

我希望有人能帮我拯救我的理智!

欢呼科林

EN

回答 2

WordPress Development用户

发布于 2017-04-19 10:32:11

您应该将public参数设置为true。这样,带有“信息包装”或“发送”post_status的帖子也将显示在总数中。

所以你的代码应该是这样的:

代码语言:javascript
复制
register_post_status( 'inpacking', array(
    'label'                     => _x( 'In Packing', 'Order packing' ),
    'public'                    => true,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'In Packing <span class="count">(%s)</span>', 'In Packing <span class="count">(%s)</span>' ),
 ) );

register_post_status( 'sent', array(
    'label'                     => _x( 'Sent', 'Order packing' ),
    'public'                    => true,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'Sent <span class="count">(%s)</span>', 'Sent <span class="count">(%s)</span>' ),
) );
票数 2
EN

WordPress Development用户

发布于 2022-03-28 00:22:47

旧的问题/答案,但对这个问题的澄清应加以处理。

首先,法典show_in_admin_all_listshow_in_admin_status_list的默认值标识为与internalexclude_from_search相反的默认值,与internal相同。文档指示默认设置为internal=FALSE,因此不必显式设置它或与其相关的任何内容。

第二,尽管@pck在设置public=TRUE将解决问题方面是正确的,但是这个答案有一个问题。设置public=TRUE不仅可以访问前端具有此状态的帖子(无论是在显示中还是在查询中),许可问题也可能出现。在许多情况下,这样的结果是不可接受的,例如公司内部的运输程序不能向公众或缺乏适当凭证的用户提供。(我假设这是您的情况,因为您在注册public=FALSE post类型时设置了order_packingcapability_type。)@pck所回避的是,需要设置publicprotectedprivate参数,以便在"All“视图中显示自定义状态的帖子。这是因为代码 of WP_Query->get_posts()将只返回具有使用这些参数设置之一注册的状态的帖子。

考虑到这两点,针对您的具体情况,一个更合适的解决方案是:

代码语言:javascript
复制
register_post_status( 'inpacking', array(
    'label'                     => _x( 'In Packing', 'Order packing' ),
    'private'                   => true,
    'label_count'               => _n_noop( 'In Packing <span class="count">(%s)</span>', 'In Packing <span class="count">(%s)</span>' ),
) );

register_post_status( 'sent', array(
    'label'                     => _x( 'Sent', 'Order packing' ),
    'private'                   => true,
    'label_count'               => _n_noop( 'Sent <span class="count">(%s)</span>', 'Sent <span class="count">(%s)</span>' ),
) );
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/256117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档