WordPress Custom Post Type – zeigt nur bestimmte Posts mit bestimmten Taxonomien an

Ich möchte bestimmte Gerichte anzeigen, die zu bestimmten Menüs gehören.

Ich habe einen benutzerdefinierten Beitrag “Gerichte” erstellt. Ich habe eine benutzerdefinierte “Menü” -Taxonomie mit drei Arten von Menüs erstellt (“Premium”, “Kinder”, “Konzept”). Wie erstelle ich bedingte Syntax in der Schleife, um nach diesem Menütyp zu suchen und die zugehörigen Beiträge zu wiederholen zu diesem Menütyp?

benutzerdefinierter Beitrag

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

benutzerdefinierte Taxonomie

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

der HTML / PHP-Teil in der Vorlage:

 
'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="https://wordpress.stackexchange.com/questions/273584/wordpress-custom-post-type-show-only-certain-posts-that-have-specific-taxonomy/">
'img-responsive')); ?>

Solutions Collecting From Web of "WordPress Custom Post Type – zeigt nur bestimmte Posts mit bestimmten Taxonomien an"

Grundsätzlich kann Ihre Frage auch wie folgt gestellt werden: Zeige alle Beiträge, wenn dem Beitrag ein beliebiger Begriff aus der Taxonomie zugewiesen wurde.

SO sollte dieser Code tun:

 $args = array( 'post_type' => 'food_dish', 'tax_query' => array( array( 'taxonomy' => 'menu', 'field' => 'name', 'terms' => array('premium', 'children', 'concept'), ), ), ); 

Wenn Sie der Meinung sind, dass dem Taxonomie-Menü in Zukunft mehr Einträge hinzugefügt werden, können Sie alle Terme für den Taxonomie-Begriff abrufen und sie den Begriffen in der Steuerabfrage als Array zuweisen