Nhận loại bài phân loại A được đính kèm


13

Được cung cấp một nguyên tắc phân loại hoặc thời hạn, có thể kéo bất kỳ / tất cả các loại bài đăng mà phân loại được đính kèm?

Ví dụ, biết xây dựng trong phân loại học categoryhoặc được đưa ra một thuật ngữ trong categoryphân loại học, có một chức năng để đảo ngược kỹ sư đó categorylà một phân loại học post?

Thông tin không cần thiết

Tôi đang làm việc với một số trường tùy chỉnh theo thuật ngữ phân loại đặc biệt cần biết loại bài đăng, nhưng nếu tham số loại bài đăng trong URL không có vì lý do gì tôi gặp rắc rối.

Câu trả lời:


12

Nếu chúng ta nhìn vào $wp_taxonomiesbiến toàn cục, chúng ta sẽ thấy các loại đối tượng liên quan.

Có thể có những cách tốt hơn để làm điều này hoặc thậm chí các chức năng cốt lõi, nhưng bạn có thể thử các cách sau:

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' )
{
    global $wp_taxonomies;
    return ( isset( $wp_taxonomies[$tax] ) ) ? $wp_taxonomies[$tax]->object_type : array();
}

sau đó cho thiết lập mặc định bạn nhận được:

$out = wpse_172645_get_post_types_by_taxonomy( 'category' );
print_r( $out );

với đầu ra:

Array
(
    [0] => post
)

8

Bạn có thể làm ngược lại với get_object_taxonomies. Kết hợp nó với get_post_typesđể lặp qua các loại bài đăng để kiểm tra các nguyên tắc phân loại đã đăng ký cho mỗi loại.

EDIT - Đây là một ví dụ tạo ra đầu ra giống như chức năng của @ birgire, mà không sử dụng các quả cầu bẩn.

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' ){
    $out = array();
    $post_types = get_post_types();
    foreach( $post_types as $post_type ){
        $taxonomies = get_object_taxonomies( $post_type );
        if( in_array( $tax, $taxonomies ) ){
            $out[] = $post_type;
        }
    }
    return $out;
}

3

Không cần phải sử dụng $wp_taxonomiesbiến toàn cục trực tiếp vì WordPress có get_taxonomy()chức năng truy cập các nguyên tắc phân loại trong đó (trong lõi kể từ phiên bản 2.3.0). Vì WordPress 4.7.0, kiểu trả về là một WP_Taxonomyđối tượng có thuộc tính$object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
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.