2012-10-09 2 views
0

또한 계층 적 슬러그 재 작성을 사용하는 내 테마 내에서 계층 적 택 소노 미를 설정하려고합니다.중복 분류 허용 슬러그 워드 프레스

나는 자동차 분류를 맞춤 분류 체계로 사용하고 있습니다. 이

그런 다음 각각의 브랜드는 지역에 따라 하위 범주에 의해 파괴 될 것이다 ... 등 혼다, 도요타 같은 범주를 나열합니다 같은

혼다 - 알라 - 텍사스 도요타 - 알라 - 텍사스

내가 가진 문제는 서로 다른 주 카테고리에 존재하지만 완전히 독립적 인 동일한 이름의 여러 하위 카테고리가 있다는 것입니다.

예 : xyz.com/honda/alabama xyz.com/toyota/alabama-2

워드 프레스는 추가 -2 번째 범주의 끝. permalink에서 -2를 막을 수있는 방법이 있습니까?

또는 택시를 구조화하는 더 좋은 방법이 있습니까?

내 원하는 결과는 다음과 같습니다

xyz.com/honda/alabama xyz.com/toyota/Alabama

감사합니다.

+0

'xyz.com/alabama/toyota'로 바로 주문할 수 있습니까? 부모를 진술 해? – Xhynk

+0

하지만 xyz.com/california/toyota를 추가하면 xyz.com/califorina/toyota-2/이 될 수 있습니다. 하위 카테고리가 분명히 다른 여러 상위 분류에서 반복 될 때 -2를 방지하려고합니다. . 나는 이것이 WordPress 데이터베이스 문제라고 생각하며 해결할 해결 방법이나 플러그인을 찾고 있습니다. – user1609391

+0

게시물에 맞춤 입력란을 추가 할 수 있습니까? 그래서 하나를 선택하거나, 주를 만들거나, 카테고리를 만든 다음, WP_Query에'cat = STATE & meta_key = make & meta_value = toyota'를 추가하십시오. – Xhynk

답변

0

기술적 인 대답은 범주를 재구성해야한다는 것이며, WordPress는 그 기능을 수행하지 않으며,별로 도움이되지 않지만 거기에 있습니다. 비즈니스 관점에서 우리는 중복 슬러그를 허용하기 위해 (지불 된) 플러그인을 사용합니다. 그것은 WordPress에 내장되어 있어야하지만 거기에 있어야합니다.

-1

마침내이 문제를 해결할 수있어서 기쁩니다. 자세한 설명은 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 파일에 포함되어야합니다.

+0

안녕하세요 @ 마니, 링크가 죽었거나 방화벽 등에 의해 차단 된 경우 답변이 쓸모 없게되어 링크 전용 답변을 가장 잘 피할 수 있습니다. 답장에 게시 한 링크의 관련 부분을 포함하도록 질문을 편집 할 수 있습니까? ? 참조 용으로 링크를 그대로 두십시오. 그러나 대답은 개선되어야합니다. –