마침내이 문제를 해결할 수있어서 기쁩니다. 자세한 설명은 http://www.cuberis.com/2013/07/wordpress-duplicate-slugs-for-different-post-types/에서 확인할 수 있습니다.
이 문서는 기본적으로는
a patch 사용할 수 있다는 것을,
its own ticket 알려진 문제입니다 만, 패치는 다음과 같은 기능을 가진 일을 주위에 할 수 있습니다 (필요한 경우) 편집 코어 파일을 필요로 말한다
:
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 by original function
$wp_slug = $slug;
// reset slug to 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 be unique across all types.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND 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;
do {
$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 be unique within their own trees. Pages are in a separate
// namespace than posts so page slugs are allowed to overlap post slugs.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND 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)[email protected]", $slug) || apply_filters('wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent)) {
$suffix = 2;
do {
$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 be unique across all posts.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND 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;
do {
$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);
이 기능은 테마의 functions.php 파일에 포함되어야합니다.
'xyz.com/alabama/toyota'로 바로 주문할 수 있습니까? 부모를 진술 해? – Xhynk
하지만 xyz.com/california/toyota를 추가하면 xyz.com/califorina/toyota-2/이 될 수 있습니다. 하위 카테고리가 분명히 다른 여러 상위 분류에서 반복 될 때 -2를 방지하려고합니다. . 나는 이것이 WordPress 데이터베이스 문제라고 생각하며 해결할 해결 방법이나 플러그인을 찾고 있습니다. – user1609391
게시물에 맞춤 입력란을 추가 할 수 있습니까? 그래서 하나를 선택하거나, 주를 만들거나, 카테고리를 만든 다음, WP_Query에'cat = STATE & meta_key = make & meta_value = toyota'를 추가하십시오. – Xhynk