Plugin loại bài đăng tùy chỉnh: Tôi đặt mẫu ở đâu?


11

Tôi đang viết một plugin loại bài tùy chỉnh. Một phần của nó tôi xuất ra mẫu thông qua shortcodes. Nhưng các phần khác cần một mẫu bài đăng tùy chỉnh và tôi đã tìm ra cách sử dụng hệ thống phân cấp mẫu cho CPT. Nhưng mẫu tùy chỉnh nằm trong chủ đề và tôi nghĩ rằng plugin nên được khép kín, ít nhất là để bắt đầu.

Vì vậy, những gì thực hành tốt nhất ở đây? Làm cách nào để chúng tôi bao gồm các tệp mẫu trong plugin CPT? Bạn có thể chỉ cho tôi những ví dụ đặc biệt tốt về cách thực hiện không?

Cảm ơn bạn đã giúp đỡ.



1
Không chắc chắn đó là một bản sao, nhưng đó là một câu hỏi chủ quan. Thực hành tốt nhất với tôi sẽ là để cho chủ đề xử lý nó. Cách thực hành tốt nhất cho người khác là làm cho plugin hoàn toàn khép kín.
chrisguitarguy

@JohannesPille Tôi đã tìm kiếm trước khi hỏi. Nhưng nhờ các liên kết. Tôi sẽ xem xét nó.
NotoriousWebmaster

1
@chrisguitarguy Đồng ý. Vấn đề của tôi với việc để chủ đề xử lý nó là nếu chúng ta chuyển đổi chủ đề, chúng ta phải thực hiện một số tùy chỉnh để phù hợp với plugin. Nếu không, chúng tôi sẽ mất những thứ mà CPT mang đến cho bữa tiệc.
NotoriousWebmaster

Câu trả lời:


8

Vì vậy, những gì thực hành tốt nhất ở đây?

Tôi muốn nói là sự kết hợp của việc để chủ đề xử lý nó và cung cấp mặc định với plugin của bạn.

Bạn có thể sử dụng single_templatebộ lọc để tắt mẫu. Trong cuộc gọi lại của bạn, hãy xem chủ đề có cung cấp một mẫu cho loại bài đăng không, nếu có, không làm gì cả.

<?php
add_filter('single_template', 'wpse96660_single_template');
function wpse96660_single_template($template)
{
    if ('your_post_type' == get_post_type(get_queried_object_id()) && !$template) {
        // if you're here, you're on a singlar page for your costum post 
        // type and WP did NOT locate a template, use your own.
        $template = dirname(__FILE__) . '/path/to/fallback/template.php';
    }
    return $template;
}

Tôi thích phương pháp này là tốt nhất. Kết hợp với việc cung cấp một bộ âm thanh của "mẫu thẻ" (ví dụ. the_content,the_title ) Mà hỗ trợ bất cứ tùy chỉnh dữ liệu mà đi cùng với loại bài viết của bạn và bạn cung cấp cho người dùng cuối rất nhiều năng lượng tùy biến cùng với một số giá trị mặc định âm thanh. Bbpress thực hiện công việc này rất tốt: bao gồm các mẫu người dùng nếu nó tìm thấy chúng và cung cấp rất nhiều thẻ mẫu.

Ngoài ra, bạn có thể sử dụng một cuộc gọi lại với the_contentbộ lọc và chỉ cần thay đổi nội dung trong chính nội dung đó.

<?php
add_filter('the_content', 'wpse96660_the_content');

function wpse96660_the_content($content)
{
    if (is_singular('your_post_type') && in_the_loop()) {
        // change stuff
        $content .= '<p>here we are on my custom post type</p>';
    }

    return $content;
}

Tôi đồng ý với @toscho rằng không có giải pháp sạch. Nhưng tôi thích khái niệm cung cấp một bộ thẻ danh mục. Tôi nghi ngờ cuối cùng tôi sẽ có một thư mục chủ đề trong plugin của mình, với mẫu CPT mẫu và khuyên người dùng nên điều chỉnh nó theo hoàn cảnh của họ. Tôi cũng thích bộ lọc_content, vì nó cắm nội dung của tôi trong bố cục của người dùng. Tôi có thể thực hiện cả hai và cho phép người dùng chọn cách đi với tùy chọn chuyển đổi.
NotoriousWebmaster

3

Bạn có thể nối vào template_includevà trả lại tệp plugin của mình nếu yêu cầu dành cho loại bài đăng của bạn:

add_filter( 'template_include', 'insert_my_template' );

function insert_my_template( $template )
{
    if ( 'my_post_type' === get_post_type() )
        return dirname( __FILE__ ) . '/template.php';

    return $template;
}

Nhưng điều này sẽ thay đổi cái nhìn quyết liệt. Vẫn chưa có giải pháp sạch.


Vâng, bạn đã đúng, nó sẽ thay đổi giao diện, bao gồm bố cục, vật dụng và những thứ khác. Quá triệt để cho khẩu vị của tôi. Nhưng cảm ơn.
NotoriousWebmaster
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.