繁体   English   中英

如何遍历自定义分类类别

[英]How to loop through custom taxonomy categories

我试图弄清楚如何将我的自定义分类类别添加到模板页面并让它们链接到该类别的所有自定义帖子类型。

这是我到目前为止所拥有的。 我创建了一个插件来保存创建自定义帖子类型(承包商)和自定义帖子分类类别(承包商类别)的功能。 就我有一个列出所有承包商的模板页面(page-contractors-full-width.php)而言,这是有效的。 在页面顶部,我有一个列出所有自定义类别(contractor_category)的循环。 问题是链接将转到 404 页面。 我无法弄清楚每个自定义类别的 slug 应该是什么。 我试过 /contractor/contractor_category 和 /contractor_category

我尝试创建archive-contractor.php 和archive-contractor_category.php 和taxonomy-contractor_category.php 的任何工作,但他们没有工作,但他们没有工作。 我已经阅读了 wordpress 文档,但这有点超出我的想象。 我最好看例子大声笑..

这是我的插件代码,用于创建自定义帖子类型和自定义分类

add_action( 'init', 'create_contractor_category_tax' );

function create_contractor_category_tax() {
    register_taxonomy(
        'contractor_category',
        'contractor',
        array(
            'label' => __( 'Contractor Category' ),
            'rewrite' => array( 'slug' => 'contractor_category' ),
            'hierarchical' => true,
        )
    );
}

function nari_post_type_contractor() {

    $supports = array(
    'title', // post title
    'editor', // post content
    'author', // post author
    'thumbnail', // featured images
    'excerpt', // post excerpt
    'custom-fields', // custom fields
    'comments', // post comments
    'revisions', // post revisions
    'post-formats', // post formats
    );

    $labels = array(
        'name' => _x('Contractors', 'plural'),
        'singular_name' => _x('Contractor', 'singular'),
        'menu_name' => _x('Contractors', 'admin menu'),
        'name_admin_bar' => _x('Contractors', 'admin bar'),
        'add_new' => _x('Add New', 'add new'),
        'add_new_item' => __('Add New Contractor'),
        'new_item' => __('New Contractor'),
        'edit_item' => __('Edit Contractor'),
        'view_item' => __('View Contractor'),
        'all_items' => __('All Contractors'),
        'search_items' => __('Search Contractors'),
        'not_found' => __('No Contractors found.'),
    );

    $args = array(
        'supports' => $supports,
        'labels' => $labels,
        'public' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'contractor'),
        'has_archive' => true,
        'hierarchical' => false,
    );
    register_post_type('contractor', $args);
}
add_action('init', 'nari_post_type_contractor');

这是我循环并获取自定义分类链接的代码

// Get the taxonomy's terms
$terms = get_terms(
    array(
        'taxonomy'   => 'contractor_category',
        'hide_empty' => true,
    )
);

// Check if any term exists
if ( ! empty( $terms ) && is_array( $terms ) ) {
    // add links for each category
    foreach ( $terms as $term ) { ?>
        <a class="btn  btn-default" href="<?php echo esc_url( get_term_link( $term ) ) ?>">
            <?php echo $term->name; ?>
        </a><?php
    }
}

任何帮助将不胜感激:)

我试图理解这个问题,并且从一个疯狂的猜测中我会说你以某种方式搞砸了你的路径。 在调用<?php echo esc_url( get_term_link( $term ) )?> url 应该可以工作,所以我猜你已经在你的管理员中触摸了 Z572D4E421E5E6B9BC111D815E815

您必须了解自定义分类法和自定义帖子类型之间的区别。

此路径将 go 到存档页面: /contractorarchive-contractor.php或如果它不存在archive.php

此路径将 go 到分类页面: /contractor/contractor_categorytaxonomy-contractor_category.php或者如果它不存在taxonomy.php )。

如果您没有存档文件或具有有效循环的分类文件,如果页面存在,您将收到 404 错误,如果不存在,您将被重定向到主页。

你的代码很好。 从你给我的唯一解决方案来看,我目前看到的问题是创建一个具有最低要求的空白石板主题(function.php 文件中的所有内容都没有插件),然后从头开始删除你所有的 exes 代码只需获得一个有效的演示。 试着得到一个清晰的画面,你会发现你的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM