如何在档案上过滤自定义分类类别?

时间:2018-08-21 作者:Maykel Esser

我正在尝试修改我的存档。我可以在php中选择类别并过滤它们的记录。

我可以显示类别,检测是否是分类页面,但通过选择它们,它们不会过滤。我做错了什么?

当我选择一个类别时,它会显示所有记录,但不会过滤。

archive.php

<?php }elseif(is_tax(\'downloads-category\')){ ?>
<section id="conteudo">
    <div class="title">
        <div class="container">
            <h1>Category Name</h1>
            <?php if (function_exists(\'yoast_breadcrumb\')){ yoast_breadcrumb(\'<p id="breadcrumbs">\',\'</p>\'); }?>
        </div>
    </div>
    <div class="content-master">
        <div class="container">
            <div class="row more-gutter">
                <aside class="col-sm-3">

                </aside>
                <div class="col-sm-9">
                    <?php 
                        $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
                        $infoDownload = array(
                            \'post_type\' => \'downloads\', 
                            \'taxonomy\'=>\'downloads-category\',
                            \'paged\' => $paged
                        );
                        $resultadoDownload = new WP_Query($infoDownload); 
                        if ($resultadoDownload->have_posts()) :
                        while ($resultadoDownload->have_posts()) : $resultadoDownload->the_post();
                            $postThumb = (has_post_thumbnail()) ? get_the_post_thumbnail_url() : get_stylesheet_directory_uri()."/img/layout/sem-imagem.jpg";
                            $postThumb = "<img src=\\"".$postThumb."\\" class=\\"img-fluid\\">";
                        ?>
                        <div class="row lista-download">
                            <div class="col-sm-4">
                                <?php echo $postThumb; ?>
                            </div>
                            <div class="col-sm-8">
                                <h3><?php the_title() ?></h3>
                                <?php the_content(); ?>
                            </div>
                        </div>
                    <?php 
                        wp_reset_postdata();
                        endwhile;
                        wpbs_pagination();
                        endif;
                    ?>
                </div>
            </div>
        </div>
    </div>
</section>

functions.php

function create_posttype() {
    register_post_type(\'downloads\',
        array(
            \'labels\' => array(
                \'name\' => __(\'Downloads\'),
                \'featured_image\' => __(\'Imagem Capa\'),
                \'singular_name\' => __(\'Download\'),
            ),
            \'taxonomies\'  => array(\'downloads-category\'),
            \'supports\' => array(
                \'title\',
                \'editor\',
                \'custom-fields\',
                \'thumbnail\'
            ),
            \'menu_icon\'   => \'dashicons-category\',
            \'with_front\' => true,
            \'public\' => true,
            \'has_archive\' => true,
            \'rewrite\' => array(\'slug\' => \'downloads\'),
        )
    );
    $labels = array(
        \'name\' => _x(\'Categorias\', \'taxonomy general name\'),
        \'singular_name\' => _x(\'Categoria\', \'taxonomy singular name\'),
        \'search_items\' =>  __(\'Procurar categoria\'),
        \'all_items\' => __(\'Todos\'),
        \'edit_item\' => __(\'Editar categoria\'), 
        \'update_item\' => __(\'Editar categoria\'),
        \'add_new_item\' => __(\'Adicionar categoria\'),
        \'new_item_name\' => __(\'Nova categoria\')
    );    
    register_taxonomy(\'downloads-category\',array(\'downloads\'), array(
        \'hierarchical\' => true,
        \'labels\' => $labels,
        \'show_ui\' => true,
        \'query_var\' => true,
        \'show_in_nav_menus\' => true,
        \'rewrite\' => array(\'slug\' => \'categoria-de-downloads\', \'with_front\' => false),
    ));   
}
add_action(\'init\', \'create_posttype\');
哦,当我使用tax\\u查询时,不会显示任何内容。。。

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$infoDownload = array(
    \'post_type\' => \'downloads\',
    \'tax_query\' => array(
        array(
            \'taxonomy\'=>\'downloads-category\',
            \'field\'    => \'slug\'
        )
    ),
    \'paged\' => $paged
);
$resultadoDownload = new WP_Query($infoDownload); 
if ($resultadoDownload->have_posts()) :

1 个回复
最合适的回答,由SO网友:Tedinoz 整理而成

概述:您创建了一个自定义帖子类型=“下载”(downloads)和一个自定义分类法=“下载(downloads\\u category)”,并将其重写为“分类下载”(categoria de downloads)

First: “The”is_tax“由于自定义分类法的名称应为”downloads_category“它必须用下划线而不是连字符拼写(Codex).
您还需要在以下方面进行更改:

  1. register_taxonomy“:自定义分类的名称,

  2. register_post_type“:“分类法”行,

  3. tax_query“:“分类法”行。

Second: 正如SallyCJ所指出的那样,\'tax query\' 需要“terms”参数。

例如:假设您为自定义分类法创建了两个术语-“Type01”和“Type02”,并且这些术语的slug是Type01和Type02。查询中的代码元素如下所示:

    array(
        \'taxonomy\' => \'downloads_category\',
        \'field\'    => \'slug\',
        \'terms\'    => array( \'type01\', \'type02\' ),
  )
Third: 您需要一些代码来实际收集段塞。这是我的建议

// get all the terms for this custom taxonomy
        $myterms = get_terms( array(
                \'taxonomy\' => \'downloads_category\',
                \'hide_empty\' => false,
        ) );    
        //echo "the terms are <pre>";print_r($myterms);echo "</pre>"; //DEBUG

        //create a simple array to store the terms for use in a query
        $termsarray = []; 
        // get the slugs only
        $termsarray = wp_list_pluck( $myterms, \'slug\' );
        //echo "terms array is <pre>";print_r($termsarray);echo "</pre>"; //DEBUG
Fourth: 您需要在查询中插入段塞。此代码已经过测试并正常工作。当然,这段代码中的变量$termsarray与前面的注释中的变量相同。

// build a new query to get all the posts for the custom taxonomy
        $myargs = array(
                \'post_type\' => \'downloads\',
                \'tax_query\' => array(
                        array(
                                \'taxonomy\' => \'downloads_category\',
                                \'field\' => \'slug\',
                                \'terms\' => $termsarray,
                        )
                )
        );
Fifth: 我建议使用归档的替代方法。php。而是为自定义分类创建一个分类文件。我从归档文件的副本中创建了一个“taxonomy categoria de downloads.php”。php。它工作得很好,可以为自定义分类设置输出格式,而无需使归档模板更加复杂。

在这种情况下,必须牢牢掌握在某些情况下调用哪些模板。这个Codex Template Hierarchy 是必不可少的,并且”Visualize The Wordpress Template Hierarchy“非常推荐。

Sixth: 在这个答案的早期版本中,我概述了显示自定义帖子本身的文件,并突出显示了术语。关于反思,这个问题根本没有提到这一点,我已经删除了它,认为它无关紧要。如果OP想看到它,我可以轻松地重新发布。

结束

相关推荐

WP入队脚本-jQuery未加载

我添加了此代码以添加jQuerywp_enqueue_script( \'jqueryadd\',\'http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\', array(),\'22.23\',true ); 但我认为这是不必要的,因为我相信wordpress附带了jquery,而wp\\u enqueue脚本提供了是否包含jquery的选项。但这是一个脚本形式的mdbootstrap。如果我删除上面的代码,它会给我一