Làm cách nào để đặt định dạng mặc định cho loại bài đăng tùy chỉnh?


7

Tôi đã tạo một loại bài đăng tùy chỉnh cho blog của mình, để cho phép phân tách nội dung dễ dàng hơn. Loại bài đăng mới này hỗ trợ các định dạng bài đăng khác nhau, nhưng hầu hết trong số chúng sẽ là phòng trưng bày.

register_post_type('atelier',
    array(
    'label' => 'L\'Atelier',
    'public' => true,
    'supports' => array('title', 'editor', 'post-formats')
    )
);

Tôi thấy rằng có thể trong Cài đặt -> Viết để đặt định dạng bài đăng mặc định cho bài đăng, có thể thực hiện tương tự cho loại bài đăng mới tạo của tôi không?


Có lẽ tốt nhất để tham khảo câu hỏi / câu trả lời này. wordpress.stackexchange.com/questions/32480/ cơ bản, tạo một mẫu bài đăng tùy chỉnh và chỉ cần tạo kiểu cho chúng thông qua đó.
Chetan

Câu trả lời:


3

Một tùy chọn sẽ là sửa đổi cài đặt Định dạng bài đăng mặc định toàn cầu, thông quaDashboard -> Settings -> Writing .

Lưu ý rằng cài đặt này là toàn cục , do đó, nó sẽ đặt mặc định cho tất cả các loại bài đăng hỗ trợ Định dạng bài.

Nếu bạn không có nhu cầu về định dạng bài đăng cho blog Bài viết, bạn chỉ có thể kích hoạt hỗ trợ định dạng bài đăng chỉ cho loại bài đăng tùy chỉnh của mình, bằng cách xóa hỗ trợ định dạng bài đăng cho bài đăng trên blog:

<?php
remove_post_type_support( 'post', 'post-formats' );
?>

(Chưa được kiểm tra, nhưng tôi thấy không có lý do tại sao nó không hoạt động.)


9

Bạn có thể xử lý việc này bằng option_default_post_formatbộ lọc:

add_filter( 'option_default_post_format', 'slimline_default_post_format' );

/**
 * Posts of post_type_1 will be asides by default, but all other post types
 * will be the default set on the Settings > Writing admin panel
 */
function slimline_default_post_format( $format ) {
    global $post_type;

    return ( 'post_type_1' === $post_type ? 'aside' : $format );
}

Nếu bạn muốn thiết lập bộ lọc cho nhiều loại bài đăng tùy chỉnh, tôi sẽ chỉnh sửa chức năng để sử dụng câu lệnh chuyển đổi, như vậy:

function slimline_default_post_format( $format ) {
    global $post_type;

    switch( $post_type ) {
        case 'post_type_1' :
            $format = 'aside';
            break;
        case 'post_type_2' :
            $format = 'quote';
            break;
    }

    return $format;
}

2
Câu trả lời này thực sự giải quyết câu hỏi ban đầu!
somatic

0

Đối với người mới bắt đầu sử dụng một cú pháp PHP khác nhau: Các khối mã trong câu trả lời xuất sắc của @ MichaelDozark cũng có thể được viết là:

/*
 * Posts of post_type_1 will be asides by default, but all other post types
 * will be the default set on the Settings > Writing admin panel
 */
add_filter( 'option_default_post_format', 'custom_default_post_format' );
function custom_default_post_format( $format ) {
    global $post_type;

    if( $post_type == 'post_type_1' ) {
        $format = 'aside';
    }

    return $format;
}

Và:

add_filter( 'option_default_post_format', 'custom_default_post_format' );
function custom_default_post_format( $format ) {
    global $post_type;

    if( $post_type == 'post_type_1' ) {
        $format = 'aside';
    } elseif ( $post_type == 'post_type_2' ) {
        $format = 'quote';
    }

    return $format;
}

Nguồn: Ví dụ cho switchcâu lệnh trong Hướng dẫn PHP.

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.