在自定义文章类型管理页面上显示自定义分类法的列

5
我想在我的自定义文章类型管理窗口中添加一列来显示我的自定义分类法。
@SarthakGupta提供的解决方案为我创建了该列,但未回显分类法或“未设置分类法”消息: Showing custom taxonomy column in custom posts type listings
我在其他地方看到过类似的解决方案,也有类似的抱怨空分类列的问题。
可能是什么原因导致这个问题?这个解决方案是否不适用于WordPress 3.3?
谢谢。
2个回答

25

从WordPress 3.5开始,您可以通过添加以下内容在注册自定义分类法时启用它:

'show_ui'           => true,
'show_admin_column' => true,

7

我曾经遇到过这个问题,并发现使用自定义查询替换WP函数get_the_terms效果更好 - 尝试使用以下代码(其中custtype是您的自定义文章类型的名称):

// custom columns
add_filter("manage_edit-custtype_columns", "custtype_columns");
add_action("manage_posts_custom_column", "custtype_custom_columns",10,2);

function custtype_columns($columns){
    $columns = array(
        "cb" => "<input type=\"checkbox\" />",
        "title" => "Title",
        "slug" => "URL Slug",
        "custtype-type" => "Custom Taxonomy"
    );
    return $columns;
}

function custtype_custom_columns($column,$id) {
    global $wpdb;
        switch ($column) {
        case 'custtype-type':
            $types = $wpdb->get_results("SELECT name FROM $wpdb->posts LEFT OUTER JOIN $wpdb->term_relationships ON ID = object_id LEFT OUTER JOIN $wpdb->terms ON term_taxonomy_id = term_id WHERE ID = {$id}");
            foreach($types as $loopId => $type) {
                echo $type->name.', ';
            }
            break;
        case 'slug':
            $text = basename(get_post_permalink($id));
            echo $text;
            break;
        default:
            break;
        } // end switch
}

那还能用吗?


mj7: 非常感谢。这太棒了。分类现在已经显示出来了。不过,我有一个问题:我该如何将slug和分类显示为链接呢? - user705100
显然这取决于您想将它们链接到哪里 - 下面的代码将会将列表中的每个分类法链接到相应分类法的编辑页面:$types = $wpdb->get_results("SELECT name,term_id FROM $wpdb->posts LEFT OUTER JOIN $wpdb->term_relationships ON ID = object_id LEFT OUTER JOIN $wpdb->terms ON term_taxonomy_id = term_id WHERE ID = {$id}"); foreach($types as $loopId => $type) { echo '<a href="/wp-admin/edit-tags.php?action=edit&taxonomy=TAXONOMY-TYPE-NAME&tag_ID='.$type->term_id.'&post_type=CUSTTYPE">'.$type->name.'</a>, '; } break; - mj7
我无法诚实地说出您所需页面的正确位置 - 找到最佳方法是复制目标页面的链接 - 将其粘贴到类型周围的a标签中,然后插入 $type->term_id 变量。注意 - 您需要确保将 term_id 字段添加到 SQL SELECT 语句中,就像上面的示例一样。 - mj7
该解决方案创建了以下格式的链接:/wp-admin/edit.php?post_type=CUSTTYPE&TAXONOMY-TYPE-NAME=6。分类法ID是正确的。所以,我不确定为什么,但是该链接返回一个空列表。 - user705100
你可能需要使用slug而不是ID - 在SELECT语句中添加"slug" - 例如:SELECT name,term_id,slug FROM $wpdb->posts - 然后将链接设置为:'<a href="/wp-admin/edit.php?post_type=CUSTTYPE&TAXONOMY-TYPE-NAME='.$type->slug.'">'.$type->name.'</a>, '; 如果失败,请查看手动从下拉筛选框中选择类别时URL的形式。 - mj7
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接