在wordpress中循环自定义帖子类型的特定类别

时间:2014-07-21 13:22:37

标签: php wordpress

刚修好......问题出在

    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' );
}

6 个答案:

答案 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);

Wp查询更多税务参考 http://www.paraview.org/gitweb?p=ParaView.git;a=blob;f=ParaViewCore/VTKExtensions/Default/vtkIntegrateAttributes.cxx;h=352155009780b7a45d5b4c00a75178de0f724675;hb=HEAD

答案 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();