WordPress : Problème avec le type de message personnalisé

Publié par Jean-Michel le

Je crée un type de publication personnalisé avec des taxonomies dans WordPress 4.7.3, mais pour une raison quelconque, les pages de taxonomie ne fonctionnent pas correctement. Mon type de message personnalisé est « events », mais le fichier de modèle archive-events.php ne fonctionne pas lors de la visite de « mysite.com/events/event-category » ou lors de la visite de « mysite.com/events »

Ci-dessous mon code de functions.php, qu’est-ce que je fais de mal ici ??? mdr

                add_action( 'init', 'register_events', 20 );
            function register_events() {
                $labels = array(
                    'name' => _x( 'All Events', 'events','sonal' ),
                    'singular_name' => _x( 'Event', 'events', 'sonal' ),
                    'add_new' => _x( 'Add New', 'events', 'sonal' ),
                    'add_new_item' => _x( 'Add New Event', 'events', 'sonal' ),
                    'edit_item' => _x( 'Edit Event', 'events', 'sonal' ),
                    'new_item' => _x( 'New Event', 'events', 'sonal' ),
                    'view_item' => _x( 'View Event', 'events', 'sonal' ),
                    'search_items' => _x( 'Search Events', 'events', 'sonal' ),
                    'not_found' => _x( 'No Events found...', 'events', 'sonal' ),
                    'not_found_in_trash' => _x( 'No Events found in Trash', 'events', 'sonal' ),
                    'parent_item_colon' => _x( 'Parent Event:', 'events', 'sonal' ),
                    'menu_name' => _x( 'Events', 'events', 'sonal' ),
                );

                $args = array(
                    'labels' => __( $labels, 'local' ),
                    'hierarchical' => true,
                    'description' => 'events',
                    'supports' => array( 'title', 'editor', 'excerpt', 'author', 'revisions' ),
                    'taxonomies' => array( 'events_category'),
                    'show_ui' => true,
                    'show_in_menu' => true,
                    'menu_position' => 5,
                    'menu_icon' => 'dashicons-tickets-alt',
                    'show_in_nav_menus' => true,
                    'publicly_queryable' => true,
                    'exclude_from_search' => false,
                    'query_var' => true,
                    'can_export' => true,
                    'rewrite' => array('slug' => 'events/%events_category%','with_front' => FALSE),
                    'public' => true,
                    'has_archive' => 'events_category',
                    'capability_type' => 'post'
                );
                register_post_type( 'events', $args );
            }
            //Create Taxonomies (Categories)
            add_action( 'init', 'create_events_taxonomies', 20 );
            function create_events_taxonomies() {
                $labels = array(
                    'name'              => _x( 'Event Categories', 'taxonomy general name', 'sonal' ),
                    'singular_name'     => _x( 'Event Category', 'taxonomy singular name', 'sonal' ),
                    'search_items'      => __( 'Search Event Categories', 'sonal' ),
                    'all_items'         => __( 'All Event Categories', 'sonal' ),
                    'parent_item'       => __( 'Parent Event Category', 'sonal' ),
                    'parent_item_colon' => __( 'Parent Event Category:', 'sonal' ),
                    'edit_item'         => __( 'Edit Event Category', 'sonal' ),
                    'update_item'       => __( 'Update Event Category', 'sonal' ),
                    'add_new_item'      => __( 'Add New Event Category', 'sonal' ),
                    'new_item_name'     => __( 'New Event Category Name', 'sonal' ),
                    'menu_name'         => __( 'Event Categories', 'sonal' ),
                );

                $args = array(
                    'hierarchical'      => true,
                    'labels'            => $labels,
                    'show_ui'           => true,
                    'show_admin_column' => true,
                    'query_var'         => true,
                    'rewrite'           => array( 'slug' => 'events', 'with_front' => false ),
                );

                register_taxonomy( 'events_category', array( 'events' ), $args );
            }
            //Set Permalinks
            function wpa_events_permalinks( $post_link, $post ){
                if ( is_object( $post ) && $post->post_type == 'events' ){
                    $terms = wp_get_object_terms( $post->ID, 'events_category' );
                    if( $terms ){
                        return str_replace( '%events_category%' , $terms[0]->slug , $post_link );
                    }
                }
                return $post_link;
            }
            add_filter( 'post_type_link', 'wpa_events_permalinks', 1, 2 );

Solution n°1 trouvée

Supprimez le /%events_category% de l’argument de réécriture du type de publication personnalisé des événements

Avant de:

'rewrite' => array('slug' => 'events/%events_category%','with_front' => FALSE),

Après:

'rewrite' => array('slug' => 'events','with_front' => FALSE),

Encore une fois dans les arguments du type de publication personnalisé des événements, définissez « has_archive » sur true

Avant de

'has_archive' => 'events_category',

Après:

'has_archive' => true,

Actualiser le permalien dans Paramètres -> permaliens Assurez-vous que vous avez choisi une structure personnalisée avec

/%category%/%postname%/

Ensuite aller à

yoursite.com/events/

le fichier archive-events.php devrait fonctionner

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *