将两种自定义帖子类型合并到一个管理页面中?


9

我正在建立一个具有4种自定义帖子类型的网站。为了使我们的客户/管理员更轻松,我想知道是否可以将这些自定义帖子类型合并到后端的一个列表中?就像您查看带有帖子列表和列的普通后端管理页面一样,该页面是否可以引入其他3种帖子类型以方便排序/搜索?

我无法将CPT合二为一,如果可能的话,它们必须在管理区域的一个“查看”页面之外保持分开。

关于如何执行此操作的任何想法?甚至从哪里开始寻找/思考如何开发呢?


1
您可能会考虑使用1个CPT,然后使用2个术语创建一个自定义分类法,以将单个CPT中的帖子分开。然后,您可以在前端模板文件的顶部进行一些逻辑处理,以根据条款/税将访客分流到另一个模板
Sy Holloway

Answers:


2

这只是一个起点,因为在进一步开发中肯定会出现问题。例如,现在,搜索功能中断,因为它期望一个字符串(post_type)并且正在接收一个数组。

要在“帖子”屏幕中列出一种以上的帖子类型,我们可以插入pre_get_posts并修改查询。在此测试中,“帖子”,“页面”和“产品”将一起显示在“帖子”屏幕(http://example.com/wp-admin/edit.php)中。

add_action( 'pre_get_posts', 'join_cpt_list_wspe_113808' );

function join_cpt_list_wspe_113808( $query ) 
{
    // If not backend, bail out
    if( !is_admin() )
        return $query;

    // Detect current page and list of CPTs to be shown in Dashboard > Posts > Edit screen
    global $pagenow;
    $cpts = array( 'post', 'page', 'product' );

    if( 'edit.php' == $pagenow && ( get_query_var('post_type') && 'post' == get_query_var('post_type') ) )
        $query->set( 'post_type', $cpts );

    return $query;
}

一个帮助代码,用于显示每个帖子的帖子类型:

add_filter( 'manage_edit-post_columns', 'add_cpt_column_wspe_113808' );
foreach( array( 'post', 'page', 'product' ) as $cpt )
    add_action( "manage_{$cpt}_posts_custom_column", 'show_cpt_column_wspe_113808', 10, 2 );

function add_cpt_column_wspe_113808( $columns ) 
{
    $columns[ 'cpt' ] = 'Post Type';
    return $columns;
}

function show_cpt_column_wspe_113808( $column_name, $post_id ) 
{
    if ( 'cpt' != $column_name )
        return;
    echo get_post_type( $post_id );
}

0

我建议为此使用Admin Menu Editor专业版。我将在底部链接到它。

有趣。在某个项目中,我正在从事一些与之相关的CPT(自定义帖子类型)。该部分是“信息中心”,他们希望将新闻稿,白皮书,推荐书等放在信息中心内。在前端,创建它很容易。在后端,我们也希望它在逻辑上也可以组合在一起。由于特定内容(元字段)和布局要求,大多数“自定义帖子类型”被设置为CPT。我们最终获得了接近20个CPT。

也就是说,我们使用了admin编辑器插件从后端菜单中删除了相关的信息中心CPT,然后使用其中的相关CPT链接创建了“信息中心”菜单。尽管它们看起来似乎结合在一起,但实际上并非如此。

这是插件链接:http : //adminmenueditor.com/也可以尝试演示。


您是如何创建“信息中心”链接的?
2014年
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.