我正在尝试修改我的存档。我可以在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()) :
最合适的回答,由SO网友:Tedinoz 整理而成
概述:您创建了一个自定义帖子类型=“下载”(downloads)和一个自定义分类法=“下载(downloads\\u category)”,并将其重写为“分类下载”(categoria de downloads)
First: “The”is_tax“由于自定义分类法的名称应为”downloads_category“它必须用下划线而不是连字符拼写(Codex).
您还需要在以下方面进行更改:
- ”register_taxonomy“:自定义分类的名称,
- ”register_post_type“:“分类法”行,
- ”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想看到它,我可以轻松地重新发布。