1

I have created custom post type with the slug (example: loan-officer). I want to remove CPT slug from the URL. I have used below code, I have seen so many threads like this, still, nothing is working.

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

Still, the slug is coming in the URL when I tried to view from admin and without slug also it's working. Can anyone suggest how to redirect from

domain.com/loan-officer/testing to domain.com/testing

Thanks.

  • 1
    Does this answer your question? Remove slug from custom post type post URLs – Luke Jun 24 at 19:09
  • 1
    No, both are not the same thread, removing slug from URL it's working. But at the same time, two URL working. One with slug and without slug. Both URL is linking to the same post. – Sudhakar SJ Jun 25 at 2:24
0

Based on the answers provided in the question that I linked to, you would probably be best served to use a plugin such as Permalink Manager Lite. It looks after the redirecting of old URLs for you and also manages the issue of duplication.

The code only option would be this answer but that depends on how much you want to code yourself.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.