WordPress自定义帖子类型-仅显示设置了特定分类的特定帖子

时间:2017-07-17 作者:clusterBuddy

我想展示属于特定菜单的特定菜肴。

我已经创建了一个“菜肴”自定义帖子。我已经创建了一个自定义的“菜单”分类法,有3种菜单类型(“高级”、“子菜单”、“概念”),如何在循环中创建条件语法来搜索该菜单类型并循环那些属于该菜单类型的帖子?

自定义帖子

function custom_post_type_food_dish()
{
    $labels = array(
        \'name\' => _x(\'Dishes\', \'Post Type General Name\', \'text_domain\'),
        \'singular_name\' => _x(\'Dish\', \'Post Type Singular Name\', \'text_domain\'),
        \'menu_name\' => __(\'Dishes\', \'text_domain\'),
        \'name_admin_bar\' => __(\'Dish\', \'text_domain\'),
        \'archives\' => __(\'Item Archives\', \'text_domain\'),
        \'attributes\' => __(\'Item Attributes\', \'text_domain\'),
        \'parent_item_colon\' => __(\'Parent Item:\', \'text_domain\'),
        \'all_items\' => __(\'All Items\', \'text_domain\'),
        \'add_new_item\' => __(\'Add New Item\', \'text_domain\'),
        \'add_new\' => __(\'Add New\', \'text_domain\'),
        \'new_item\' => __(\'New Item\', \'text_domain\'),
        \'edit_item\' => __(\'Edit Item\', \'text_domain\'),
        \'update_item\' => __(\'Update Item\', \'text_domain\'),
        \'view_item\' => __(\'View Item\', \'text_domain\'),
        \'view_items\' => __(\'View Items\', \'text_domain\'),
        \'search_items\' => __(\'Search Item\', \'text_domain\'),
        \'not_found\' => __(\'Not found\', \'text_domain\'),
        \'not_found_in_trash\' => __(\'Not found in Trash\', \'text_domain\'),
        \'featured_image\' => __(\'Featured Image\', \'text_domain\'),
        \'set_featured_image\' => __(\'Set featured image\', \'text_domain\'),
        \'remove_featured_image\' => __(\'Remove featured image\', \'text_domain\'),
        \'use_featured_image\' => __(\'Use as featured image\', \'text_domain\'),
        \'insert_into_item\' => __(\'Insert into item\', \'text_domain\'),
        \'uploaded_to_this_item\' => __(\'Uploaded to this item\', \'text_domain\'),
        \'items_list\' => __(\'Items list\', \'text_domain\'),
        \'items_list_navigation\' => __(\'Items list navigation\', \'text_domain\'),
        \'filter_items_list\' => __(\'Filter items list\', \'text_domain\'),
    );
    $args = array(
        \'label\' => __(\'Dish\', \'text_domain\'),
        \'description\' => __(\'food_dish is the dishes that go into the menu\', \'text_domain\'),
        \'labels\' => $labels,
        \'supports\' => array(\'title\', \'editor\', \'excerpt\', \'thumbnail\', \'comments\', \'post-formats\',),
        //\'taxonomies\'            => array( \'category\', \'post_tag\' ),
        \'hierarchical\' => false,
        \'public\' => true,
        \'show_ui\' => true,
        \'show_in_menu\' => true,
        \'menu_position\' => 5,
        \'show_in_admin_bar\' => true,
        \'show_in_nav_menus\' => true,
        \'can_export\' => true,
        \'has_archive\' => true,
        \'exclude_from_search\' => false,
        \'publicly_queryable\' => true,
        \'capability_type\' => \'page\',
        \'menu_icon\' => \'dashicons-image-filter\',
    );
    register_post_type(\'food_dish\', $args);

}
add_action(\'init\', \'custom_post_type_food_dish\', 0);
自定义分类法
function add_custom_taxonomies()
{
    // Add new "Menus" taxonomy to Posts
    register_taxonomy(\'menu\', \'food_dish\', array(
        // Hierarchical taxonomy (like categories)
        \'hierarchical\' => true,
        // This array of options controls the labels displayed in the WordPress Admin UI
        \'labels\' => array(
            \'name\' => _x(\'Menus\', \'taxonomy general name\'),
            \'singular_name\' => _x(\'Menu\', \'taxonomy singular name\'),
            \'search_items\' => __(\'Search Menus\'),
            \'all_items\' => __(\'All Menus\'),
            \'parent_item\' => __(\'Parent Menu\'),
            \'parent_item_colon\' => __(\'Parent Menu:\'),
            \'edit_item\' => __(\'Edit Menu\'),
            \'update_item\' => __(\'Update Menu\'),
            \'add_new_item\' => __(\'Add New Menu\'),
            \'new_item_name\' => __(\'New Menu Name\'),
            \'menu_name\' => __(\'Menus\'),
        ),
        // Control the slugs used for this taxonomy
        \'rewrite\' => array(
            \'slug\' => \'menus\', // This controls the base slug that will display before each term
            \'with_front\' => false, // Don\'t display the category base before "/locations/"
            \'hierarchical\' => true, // This will allow URL\'s like "/locations/boston/cambridge/"
        ),
    ));
}

add_action(\'init\', \'add_custom_taxonomies\', 0);
模板中的HTML/PHP部分:

<div class="container-fluid">
                <?php
                $args = array(
                    \'post_type\' => \'food_dish\',
                    \'taxonomy_name\' => \'menu\'
                );
                $loop = new WP_Query($args);
                while ($loop->have_posts()) : $loop->the_post();
                    //prePrint($loop);
                    if ( in_category( \'premium\' ) ) {
                        ?>
                        <a href="<?php the_permalink() ?>">
                            <div class="row">
                                <div class="col-md-3">
                                    <?php the_post_thumbnail(\'medium\', array(\'class\' => \'img-responsive\')); ?>
                                </div>
                                <div class="col-md-6">
                                    <p><?php the_excerpt() ?></p>
                                </div>
                                <div class="col-md-3">
                                    <h3><?php the_title(); ?></h3>
                                </div>
                            </div>
                    </a>
                    <?php
                }
            endwhile; ?>
        </div>

1 个回复
SO网友:user7459842

因此,基本上你的问题也可以放在:如果帖子已经从分类法中分配了任何术语,那么显示所有帖子。

因此,此代码应执行以下操作:

$args = array(
    \'post_type\' => \'food_dish\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'menu\',
            \'field\'    => \'name\',
            \'terms\'    => array(\'premium\', \'children\', \'concept\'),
        ),
    ),
);  
如果您觉得将来会有更多TER添加到分类法“菜单”,那么您可以检索分类法术语的所有术语,并将它们作为数组分配给税务查询中的术语

结束

相关推荐