So zeigen Sie Begriffe an, die nur für bestimmte benutzerdefinierte Beitragstypen verwendet werden. Filter erstellen pumpen

jeder. Ich habe 10 benutzerdefinierte Post-Typen und sie teilen 5 Taxonomien. Momentan arbeite ich an der Archivseitenvorlage, in der ich auf der Basis von Taxonomien Ajaxfilter für jeden Posttyp erstellen möchte.

Zum Beispiel haben wir Post-Typen Schmuck und Uhren. Beide haben die Taxonomie Marke geteilt (ich meine, dass jedes Mal, wenn ich die Marke zu den Uhren hinzufüge, es auch auf der Wahl der Schmuckmarken erscheint). Jetzt, auf der Archivseite der Uhren, möchte ich nur Marken anzeigen, die von den Watch-Custom-Posts verwendet wurden.

Um eine Taxonomie zu erstellen, habe ich das CPT UI Plugin benutzt.

Dies ist der Code, den ich mir ausgedacht habe, aber er zeigt alle Begriffe:

name, 'object'); // Build an array of taxonomies slugs to be used in our $args array below to filter only taxes we need. foreach ($cpt_taxes as $cpt_tax) { $cpt_tax_name = $cpt_tax->name; $cpt_tax_label = $cpt_tax->labels->singular_name; ?> 
  • $cpt_tax_name, 'orderby' => 'name', 'hide_empty' => true )) as $term_data) { echo 'name . '" type="checkbox" name="' . $term_data->name . '">
    '; // ID of the category as the value of an option }?>
  • Solutions Collecting From Web of "So zeigen Sie Begriffe an, die nur für bestimmte benutzerdefinierte Beitragstypen verwendet werden. Filter erstellen pumpen"

    Sie müssen param post_id im Ajax der Daten senden. Dann in Ihrem Plugin parsen und und nach Taxomony suchen. Mein einfaches Beispiel:

     < ?php // in ajax handler // get post_id from requst data $post_id = filter_var($_POST['post_id'], FILTER_VALIDATE_INT); // find post $post = get_post($post_id); 

    Aber bevor Sie sich registrieren müssen, registrieren Sie die Steuerform.

     register_taxonomy('auto', array($post->post_type), array( 'label' => '', // определяется параметром $labels->name 'labels' => array( 'name' => 'auto', 'singular_name' => 'auto', 'search_items' => 'Search auto', 'all_items' => 'All auto', 'view_item ' => 'View auto', 'parent_item' => 'Parent auto', 'parent_item_colon' => 'Parent auto:', 'edit_item' => 'Edit auto', 'update_item' => 'Update auto', 'add_new_item' => 'Add New auto', 'new_item_name' => 'New auto Name', 'menu_name' => 'Auto', ), 'description' => '', // описание таксономии 'public' => true, 'publicly_queryable' => null, // равен аргументу public 'show_in_nav_menus' => true, // равен аргументу public 'show_ui' => true, // равен аргументу public 'show_tagcloud' => true, // равен аргументу show_ui 'show_in_rest' => null, // добавить в REST API 'rest_base' => null, // $taxonomy 'hierarchical' => false, 'update_count_callback' => '', 'rewrite' => true, 'capabilities' => array(), 'meta_box_cb' => null, // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще 'show_admin_column' => false, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5) '_builtin' => false, 'show_in_quick_edit' => null, // по умолчанию значение show_ui ) ); 

    und Begriffe registrieren

     wp_set_object_terms($post_id, ['audi', 'bmw', 'kia'], 'auto'); 

    Schließlich müssen Sie Antwort senden

      ob_start(); // Build an array of taxonomies slugs to be used in our $args array below to filter only taxes we need. foreach ($cpt_taxes as $cpt_tax) { $cpt_tax_name = $cpt_tax->name; $cpt_tax_label = $cpt_tax->labels->singular_name; ?> 
  • < ?php echo $cpt_tax_label; ?>
    < ?php $terms_list = (array)get_terms([ 'taxonomy' => $cpt_tax_name, 'orderby' => 'name', 'hide_empty' => true, ]); foreach ($terms_list as $term_data) { echo '
    '; // ID of the category as the value of an option } ?>
  • < ?php } $html = ob_get_clean(); wp_send_json_success($html); wp_die();

    Mein Code auf GitHub https://github.com/ggmanuilov/wpajaxtaxomony/tree/master

    Ich hoffe, ich konnte dir helfen.