Conflict when using the same slug name for page and post type in Wordpress -
i have problems permalink in wordpress.
i have created page "grid-services" have permalink : example.com/grid-services/
i registered , costum post type "markets", , after created market named "grid-services", permalink: example.com/markets/grid-services/
the problem when try access example.com/grid-services/ url, automaticly redirect me example.com/markets/grid-services/ page url
what have tried when register post type have tried change code in diferent combination, nothing seems work.
register_post_type( 'markets', array( 'labels' => $labels, 'public' => true, 'supports' => $supports, 'hierarchical' => true, 'rewrite' => array("slug" => "markets"), 'has_archive' => false, )
);
what can problem?
giving function, can --
function wp_cpt_unique_post_slug($slug, $post_id, $post_status, $post_type, $post_parent, $original_slug) { if ( in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) ) return $slug; global $wpdb, $wp_rewrite; // store slug made original function $wp_slug = $slug; // reset slug original slug $slug = $original_slug; $feeds = $wp_rewrite->feeds; if ( ! is_array( $feeds ) ) $feeds = array(); $hierarchical_post_types = get_post_types( array('hierarchical' => true) ); if ( 'attachment' == $post_type ) { // attachment slugs must unique across types. $check_sql = "select post_name $wpdb->posts post_name = %s , id != %d limit 1"; $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_id ) ); if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_attachment_slug', false, $slug ) ) { $suffix = 2; { $alt_post_name = substr ($slug, 0, (200 - ( strlen( $suffix ) + 1 )) ) . "-$suffix"; $post_name_check = $wpdb->get_var( $wpdb->prepare($check_sql, $alt_post_name, $post_id ) ); $suffix++; } while ( $post_name_check ); $slug = $alt_post_name; } } elseif ( in_array( $post_type, $hierarchical_post_types ) ) { if ( 'nav_menu_item' == $post_type ) return $slug; // page slugs must unique within own trees. pages in separate // namespace posts page slugs allowed overlap post slugs. $check_sql = "select post_name $wpdb->posts post_name = %s , post_type = %s , id != %d , post_parent = %d limit 1"; $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_id, $post_parent ) ); if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug ) || apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent ) ) { $suffix = 2; { $alt_post_name = substr( $slug, 0, (200 - ( strlen( $suffix ) + 1 )) ) . "-$suffix"; $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_id, $post_parent ) ); $suffix++; } while ( $post_name_check ); $slug = $alt_post_name; } } else { // post slugs must unique across posts. $check_sql = "select post_name $wpdb->posts post_name = %s , post_type = %s , id != %d limit 1"; $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_id ) ); if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type ) ) { $suffix = 2; { $alt_post_name = substr( $slug, 0, (200 - ( strlen( $suffix ) + 1 )) ) . "-$suffix"; $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_id ) ); $suffix++; } while ( $post_name_check ); $slug = $alt_post_name; } } return $slug; } add_filter('wp_unique_post_slug', 'wp_cpt_unique_post_slug', 10, 6);
Comments
Post a Comment