WordPress : Je ne sais pas comment afficher les taxonomies personnalisées à partir d’un post_type personnalisé
J’ai créé un post_type personnalisé appelé Events, où je peux afficher les événements ( URL:HTTP://localhost.com/events
) qui sont chargés par l’archive-events.php que j’ai créé.
J’ai maintenant créé une taxonomie personnalisée appelée comtés que je souhaite utiliser pour filtrer les événements en fonction du comté dans lequel ils se trouvent. Je peux appliquer des comtés à des événements spécifiques, mais je ne sais pas comment les afficher. J’ai essayé de créer un taxonomy-counties.php
Mais je n’ai aucune idée de comment le tester ou le déboguer car si j’essaie d’aller HTTP://localhost.com/events/county
ou HTTP://localhost.com/county
cela me mène à un ‘404 Page Not Found’.
Voici le code que j’ai utilisé pour créer la taxonomie :
add_action('init', 'create_counties_hierarchical_taxonomy', 0);
function create_counties_hierarchical_taxonomy() {
$labels = array(
'name' => _x( 'Counties', 'taxonomy general name' ),
'singular_name' => _x( 'County', 'taxonomy singular name' ),
'search_items' => __( 'Search Counties' ),
'all_items' => __( 'All Counties' ),
'parent_item' => __( 'Parent County' ),
'parent_item_colon' => __( 'Parent County:' ),
'edit_item' => __( 'Edit County' ),
'update_item' => __( 'Update County' ),
'add_new_item' => __( 'Add New County' ),
'new_item_name' => __( 'New County Name' ),
'menu_name' => __( 'Counties' ),
);
// Register Taxonomy
register_taxonomy('counties',array('events'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'county' ),
));
}
J’ai essayé de parcourir la documentation du développeur WordPress, mais malheureusement, je n’ai pas été en mesure de comprendre cela et j’ai trouvé une réponse.
Merci!
Solution n°1 trouvée
Ok, j’ai travaillé pour vous:
Tout d’abord, j’ai enregistré le type de message personnalisé et la taxonomie :
add_action('init', 'my_init');
add_action('admin_init', 'my_admin_init');
function my_admin_init() {
$role = get_role( 'administrator' );
$role->add_cap( 'edit_event' );
$role->add_cap( 'read_event' );
$role->add_cap( 'delete_event' );
$role->add_cap( 'edit_events' );
$role->add_cap( 'read_events' );
$role->add_cap( 'delete_events' );
$role->add_cap( 'edit_others_events' );
$role->add_cap( 'publish_events' );
$role->add_cap( 'read_private_events' );
$role->add_cap( 'delete_private_events' );
$role->add_cap( 'delete_published_events' );
$role->add_cap( 'edit_private_events' );
$role->add_cap( 'edit_published_events' );
$role->add_cap( 'create_events' );
$role->add_cap( 'delete_others_events' );
$role->add_cap( 'delete_others_event' );
}
function my_init() {
global $post;
$labels = array(
'name' => __( 'event', 'webto' ),
'singular_name' => __( 'Header component', 'webto' ),
'menu_name' => __( 'Event', 'webto' ),
'parent_item_colon' => __( 'Parental:', 'webto' ),
'all_items' => __( 'event', 'webto' ),
'view_item' => __( 'View', 'webto' ),
'add_new_item' => __( 'Add new event', 'webto' ),
'add_new' => __( 'Add new', 'webto' ),
'edit_item' => __( 'Edit event', 'webto' ),
'update_item' => __( 'Update event ', 'webto' ),
'search_items' => __( 'Find event', 'webto' ),
'not_found' => __( 'Not found', 'webto' ),
'not_found_in_trash' => __( 'Not found in the bin', 'webto' ),
);
$args = array(
'labels' => $labels,
'supports' => array('title'),
'public' => false,
'publicly_queryable' => false,
'capability_type' => array('event', 'events'),
'map_meta_cap' => true,
'show_in_menu' => true,
'rewrite' => array( 'slug' => 'events' ),
'query_var' => true,
'show_in_rest' => false,
'show_ui' => true,
'hierarchical' => false,
'menu_position' => 1,
'menu_icon' => 'dashicons-welcome-widgets-menus',
);
register_post_type( 'events', $args );
$labels = array(
'name' => _x( 'county', 'taxonomy general name' ),
'singular_name' => _x( 'county', 'taxonomy singular name' ),
'search_items' => __( 'Search county' ),
'all_items' => __( 'All counties' ),
'parent_item' => __( 'Parent county' ),
'parent_item_colon' => __( 'Parent county:' ),
'edit_item' => __( 'Edit county' ),
'update_item' => __( 'Update county' ),
'add_new_item' => __( 'Add New county' ),
'new_item_name' => __( 'New county Name' ),
'menu_name' => __( 'counties' )
);
// Register Taxonomy
register_taxonomy('county', array('events'), array(
'hierarchical' => true,
'public' => true,
'publicly_queryable' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true
));
flush_rewrite_rules();
}
J’ai obtenu ce qui suit :
Créez vos messages et attribuez-leur des comtés
Les comtés sur la page des comtés auront des liens pour afficher
Nous pouvons créer une page d’archives pour des comtés spécifiques
taxonomy-county.php
Affichez également vos publications
// templates/your-template/taxonomy-county.php
<?php
global $post;
$county = get_queried_object();
$args = array(
'post_type' => 'events',
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => $county->taxonomy,
'field' => 'term_id',
'terms' => $county->term_id
)
)
);
// Get posts by current county
$events = get_posts($args);
// All counties
$all_counties = get_terms($county->taxonomy);
foreach($all_counties as $county) {
$args = array(
'post_type' => 'events',
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => $county->taxonomy,
'field' => 'term_id',
'terms' => $county->term_id
)
)
);
// get posts by county
$events = get_posts($args);
}
0 commentaire