WordPress : Supprimer le slug CPT de l’URL WordPress
J’ai créé un type de publication personnalisé avec le slug (exemple : agent de crédit). Je souhaite supprimer le slug CPT de l’URL. J’ai utilisé le code ci-dessous, j’ai vu tellement de discussions comme celle-ci, mais rien ne fonctionne.
function custom_post() {
register_post_type(
'loan_officers', array(
'labels' => array('name' => __( 'Loan Officers' ), 'singular_name' => __( 'Loan Officer' ) ),
'public' => true,
'has_archive' => true,
'menu_icon' => 'dashicons-calendar-alt',
'supports' => array('title', 'editor', 'thumbnail', 'page-attributes'),
'publicly_queryable' => true, // you should be able to query it
'show_ui' => true, // you should be able to edit it in wp-admin
'show_in_menu' => true,
'show_in_admin_bar' => true,
'exclude_from_search' => false, // you should exclude it from search results
'show_in_nav_menus' => true, // you shouldn't be able to add it to menus
'has_archive' => false, // it shouldn't have archive page
'rewrite' => array(
'slug' => 'loan-officer',
'with_front' => false,
)
)
);
}
add_action( 'init', 'custom_post');
function gp_remove_cpt_slug( $post_link, $post ) {
if ( 'loan_officers' === $post->post_type && 'publish' === $post->post_status ) {
$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
}
return $post_link;
}
add_filter( 'post_type_link', 'gp_remove_cpt_slug', 10, 2 );
function gp_add_cpt_post_names_to_main_query( $query ) {
if ( ! $query->is_main_query() ) {
return;
}
if ( ! isset( $query->query['page'] ) || 2 !== count( $query->query ) ) {
return;
}
if ( empty( $query->query['name'] ) ) {
return;
}
$query->set( 'post_type', array( 'post', 'page', 'loan_officers' ) );
}
add_action( 'pre_get_posts', 'gp_add_cpt_post_names_to_main_query' );
Pourtant, le slug arrive dans l’URL lorsque j’ai essayé de voir depuis l’administrateur et sans slug, cela fonctionne également. Quelqu’un peut-il suggérer comment rediriger à partir de
domaine.com/loan-officer/testing à domaine.com/testing
Merci.
Solution n°1 trouvée
Sur la base des réponses fournies dans la question à laquelle j’ai lié, vous seriez probablement mieux servi d’utiliser un plugin tel que Permalink Manager Lite. Il s’occupe pour vous de la redirection des anciennes URL et gère également le problème de duplication.
L’option de code uniquement serait cette réponse, mais cela dépend de combien vous voulez vous coder.
0 commentaire