刚修好......问题出在
register_taxonomy_for_object_type( 'tags', 'produto' );
正在注册标签而不是类别....已修复:
<?php
$tag = 'taeq';
$args = array('post_type' => 'produto', 'posts_per_page' => -1, 'produto_category' => $tag);
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post(); ?>
<li>
<img src="<?php the_field('produto_img'); ?>" alt="<?php the_title(); ?>" />
<span><?php the_title(); ?></span>
<span><?php the_field("produto_desc"); ?></span>
<i class="border"></i>
</li>
<?php endwhile; ?>
正确的问题是如何在wordpress中循环自定义帖子类型的特定标签
我试图在wordpress上只播放一个类别的帖子。
我对PHP一无所知......
这是我的代码,工作,但显示所有产品
<?php
$new_query = new WP_Query('post_type=produto&post_per_page=-1');
while($new_query -> have_posts()) : $new_query -> the_post();
?>
<li>
<img src="<?php the_field("produto_img"); ?>" alt="<?php the_title(); ?>" />
<span><?php the_title(); ?></span>
<span><?php the_field("produto_desc"); ?></span>
<i class="border"></i>
</li>
<?php endwhile; ?>
我需要显示ID 2类别中的项目。
我该怎么办?
OBS:我的网站是单页网站。 我在同一页面的不同位置显示所有帖子类型。 需要按类别过滤。
函数php:
add_action( 'init', 'create_post_type_produto' );
function create_post_type_produto() {
$labels = array(
'name' => _x('Produtos', 'post type general name'),
'singular_name' => _x('Produtos', 'post type singular name'),
'add_new' => _x('Adicionar novo', 'produto'),
'add_new_item' => __('Adicionar novo produto'),
'edit_item' => __('Editar produto'),
'new_item' => __('Novo produto'),
'all_items' => __('Todos os produtos'),
'view_item' => __('Ver produtos'),
'search_items' => __('Procurar produtos'),
'not_found' => __('Nenhum produto encontrado'),
'not_found_in_trash' => __('Nenhum produto encontrado na lixeira.'),
'parent_item_colon' => '',
'menu_name' => 'Produtos'
);
register_post_type( 'produto', array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'has_archive' => 'produtos',
'rewrite' => array(
'slug' => 'produtos',
'with_front' => false,
),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title')
)
);
register_taxonomy( 'produto_category', array( 'produto' ), array(
'hierarchical' => true,
'label' => __( 'Categoria do produto' ),
'labels' => array( // Labels customizadas
'name' => _x( 'Categorias', 'taxonomy general name' ),
'singular_name' => _x( 'Categoria', 'taxonomy singular name' ),
'search_items' => __( 'Procurar categorias' ),
'all_items' => __( 'Todas categorias' ),
'parent_item' => __( 'Categoria pai' ),
'parent_item_colon' => __( 'Categoria pai:' ),
'edit_item' => __( 'Editar categoria' ),
'update_item' => __( 'Atualizar categoria' ),
'add_new_item' => __( 'Adicionar nova categoria' ),
'new_item_name' => __( 'Nome da nova categoria' ),
'menu_name' => __( 'Categoria' ),
),
'show_ui' => true,
'show_in_tag_cloud' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'produtos/categorias',
'with_front' => false,
),)
);
register_taxonomy_for_object_type( 'tags', 'produto' );
}
答案 0 :(得分:2)
使用wp查询
中的自定义分类法过滤器的税务查询来尝试此操作 // using category slug
$args = array(
'post_type' => 'produto',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'produto_category',
'field' => 'slug', // term_id, slug
'terms' => 'taeq',
),
)
);
// using category id
/* $args = array(
'post_type' => 'produto',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'produto_category',
'field' => 'term_id', // term_id, slug
'terms' => 5,
),
)
);
*/
$loop = new WP_Query($args);
答案 1 :(得分:1)
您可以在WP_Query中使用category参数。因此,您可以将WP_Query更改为:
WP_Query('post_type=produto&post_per_page=-1&cat=4');
其中cat = 4是类别ID。
您可以在http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters
中查看其他方法来定义它答案 2 :(得分:0)
使用cat
(或product_cat
for products)元素(为清晰起见,也使用$args
数组)示例:
$cat = 2; // The product category you want to display
$args = array('post_type' => 'produto', 'posts_per_page' => -1, 'cat' => $cat);
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post(); ?>
<li>
<img src="<?php the_field('produto_img'); ?>" alt="<?php the_title(); ?>" />
<span><?php the_title(); ?></span>
<span><?php the_field("produto_desc"); ?></span>
<i class="border"></i>
</li>
<?php endwhile; ?>
答案 3 :(得分:0)
我使用像这样的自定义分类过滤器
事件是我的自定义帖子类型,特色事件是事件类别slug ...
它对我来说很完美,希望它有所帮助:)
$loop = new WP_Query( array(
'post_type' => 'event','tax_query' => array(
array(
'taxonomy' => 'event-categories',
'field' => 'slug',
'terms' => 'featured-events',
)
)) );
答案 4 :(得分:0)
您正在使用custom taxonomy
,因此您无法将该参数用于类别,您应该使用分类法查询https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters
所以你的代码应该是
<?php
$args = array(
'post_type' => 'produto',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'produto_category',
'field' => 'slug', // search by slug name, you may change to use ID
'terms' => 'taeq', // value of the slug for taxonomy, in term using ID, you should using integer type casting (int) $value
),
)
);
$new_query = new WP_Query($args);
while($new_query -> have_posts()) : $new_query -> the_post();
?>
<li>
<img src="<?php the_field("produto_img"); ?>" alt="<?php the_title(); ?>" />
<span><?php the_title(); ?></span>
<span><?php the_field("produto_desc"); ?></span>
<i class="border"></i>
</li>
<?php endwhile; ?>
答案 5 :(得分:-1)
如果您尝试仅在类别模板上显示一个类别,则可以使用
此代码
query_posts('cat=6');// while 6 is category id you want to show
在wp模板中的此代码之前
if ( have_posts() ) :
while ( have_posts() ) : the_post();