【问题标题】:How to loop through custom taxonomy categories如何遍历自定义分类类别
【发布时间】:2020-10-20 22:20:43
【问题描述】:

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

这是我目前所拥有的。我创建了一个插件来保存创建自定义帖子类型 (contractor) 和自定义帖子分类类别 (contractor_category) 的函数。就我有一个列出所有承包商的模板页面(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 wordpress custom-taxonomy


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      相关资源
      最近更新 更多