首页 文章

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

提问于
浏览
1

刚刚解决了......问题出在了

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

    在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查询更多税务参考https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

  • -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

  • 1

    通过使用 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; ?>
    
  • 2

    我使用这样的自定义分类过滤器

    事件是我的自定义帖子类型和特色事件是事件类别slug ...

    它对我来说很完美,希望它有帮助:)

    $loop = new WP_Query( array( 
                             'post_type' => 'event','tax_query' => array(
                                                               array(
                                                               'taxonomy' => 'event-categories',
                                                               'field'    => 'slug',
                                                               'terms'    => 'featured-events',
                                                               )
                                                         )) );
    
  • 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; ?>
    
  • 0

    如果您尝试在类别模板上只显示一个类别,则可以使用

    这段代码

    query_posts('cat=6');// while 6 is category id you want to show
    

    在你的wp模板中的这段代码之前

    if ( have_posts() ) :
                        while ( have_posts() ) : the_post();
    

相关问题