Phân loại tùy chỉnh không thể có cùng điều khoản (sên) như thể loại?


8

Tôi biết rằng không thể có các thuật ngữ tương tự (sên hạn) trong các danh mục và thẻ, nhưng đáng ngạc nhiên, như tôi nhận ra ngày nay, đó cũng là trường hợp với các nguyên tắc phân loại tùy chỉnh.

Vì vậy, ví dụ, nếu trang web của tôi có một danh mục được gọi Linux (linux)và tôi muốn tạo một thuật ngữ phân loại tùy chỉnh có tên là 'Linux', thì nó sẽ trông giống như Linux (linux-2), tức là các con sên phải khác nhau.

Và nếu tôi cố đổi tên sên trở lại linux, tôi sẽ gặp lỗi, "Sên 'linux' đã được sử dụng bởi một thuật ngữ khác" .

Có thể có các điều khoản tương tự theo danh mục / thẻ và phân loại tùy chỉnh (không tàn phá)?


Làm thế nào để nhân rộng vấn đề?

  1. Tạo 3-5 bài viết mới. Tạo một danh mục và thẻ mới và gán chúng cho các bài đăng đó (chỉ dành cho mục đích thử nghiệm).

  2. Lưu cài đặt permalink.

  3. tạo hai thuật ngữ mới theo phân loại tùy chỉnh có cùng tên và sên là danh mục và thẻ bạn đã tạo trước đó và gán chúng cho bài đăng mới theo loại bài đăng tùy chỉnh.

  4. Xóa các nguyên tắc phân loại tùy chỉnh.

  5. Hãy thử tạo lại chúng và bây giờ bạn sẽ gặp lỗi: "Sên 'XXX' đã được sử dụng bởi một thuật ngữ khác."

Đôi khi, điều đó sẽ lặp lại vấn đề, đôi khi không.

Nhưng...

Nếu bạn có thể tạo một danh mục (hoặc thẻ) và phân loại tùy chỉnh có cùng tên và sên, hãy làm điều đó. Sau đó, đổi tên một trong số chúng và bạn sẽ nhận thấy rằng cả danh mục (hoặc thẻ) và phân loại tùy chỉnh đều được đổi tên!


Hmm, điều này không xảy ra với tôi. Bạn có thể dán mã phân loại tùy chỉnh của bạn?
Matthew Boynes

@MatthewBoynes Ồ, đây là những gì nó trông giống như: gist.github.com/anonymous/5267905cccae4d52cc1b
its_me

Tôi đang sử dụng bản dựng hàng đêm mới nhất của WordPress và mã của bạn, nguyên văn, không gặp phải lỗi này. Đây là những gì bạn nên làm tiếp theo: (1) Trong bản cài đặt sạch WordPress 3.6.1, chỉ thêm loại bài đăng và mã phân loại của bạn vào một chủ đề sạch. Sử dụng Twenty Thirteen hoặc Toolbox hoặc một cái gì đó. Nếu nó hoạt động, bạn biết vấn đề không nằm ở WP mà thay vào đó là một plugin hoặc chủ đề của bạn. Nếu nó xảy ra, hãy thử điều tương tự với bản dựng hàng đêm mới nhất là 3.7. Nếu nó hoạt động, thì bạn không phải lo lắng vì 3.7 có thể sẽ ra mắt vào tuần tới. Nếu nó vẫn xảy ra, cung cấp tất cả các mã cần thiết để sao chép nó.
Matthew Boynes

@MatthewBoynes Được rồi. Tôi sẽ kiểm tra nó và xem. Nhân tiện, tôi đã ở trên 3.7 ổn định, được phát hành vào ngày hôm qua / hôm nay.
it_me

Ah, bạn nói đúng, bằng cách nào đó tôi đã bỏ lỡ điều đó!
Matthew Boynes

Câu trả lời:


9

Hóa ra, đây là một lỗi trong lõi. Tôi đã định báo cáo nó, nhưng phát hiện ra rằng nó đã ở đó trong nhiều năm và cũng áp dụng cho các nguyên tắc phân loại tùy chỉnh. Xem vé: # 5809 , # 21950# 22023 .

Nếu tất cả diễn ra theo đúng kế hoạch, nó sẽ được sửa thành 3,8 3.9 4.14.2. CẬP NHẬT: Yep, đã sửa !


Trong thời gian này, đây là một kế hoạch khắc phục vấn đề - tự động đặt hậu tố sên tùy chỉnh cho tất cả các thuật ngữ mới được tạo theo phân loại:

/*
 * Set custom slug suffix for terms of a taxonomy
 * 
 * http://wordpress.stackexchange.com/q/42550/10691
 * http://wordpress.stackexchange.com/q/71304/10691
 * http://wordpress.stackexchange.com/q/120096/10691
 * https://github.com/WordPress/WordPress/blob/master/wp-includes/taxonomy.php
 */
add_action( 'created_term', 'aahank_add_suffix_to_term', 10, 3 );
function aahank_add_suffix_to_term( $term_id, $tt_id, $taxonomy ) {
    if( $taxonomy == 'book' ) {

        // e.g. Term name 'PHP' and term slug 'php-books'
        $term = get_term( $term_id, $taxonomy );
        $args = array( 'slug' => $term->slug . '-books' );
        wp_update_term( $term_id, $taxonomy, $args );

    }
}

Đây không phải là hồi cứu, tức là những con sên chỉ các thuật ngữ mới theo phân loại ('sách' trong trường hợp của chúng tôi) được tạo ra với hậu tố tùy chỉnh của chúng tôi ('-books').

Để đặt tiền tố thay vào đó, hãy thay đổi dòng này trong hàm:

$args = array( 'slug' => $term->slug . '-books' );

đến một cái gì đó như thế này:

// e.g. Term name 'PHP' and term slug 'books-php'
$args = array( 'slug' => 'books-' . $term->slug );

Và một khi lỗi đã được sửa ...

Kết xuất cơ sở dữ liệu và thực hiện tìm kiếm regex và thay thế bằng trình soạn thảo văn bản phù hợp như Sublime Text hoặc TextMate (hoặc như thế này ).

Có lẽ không phải là cách tốt nhất để làm điều đó, nhưng đủ tốt để hoàn thành công việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.