Tôi có một trang mà tôi cần cho phép người dùng nhập một đoạn văn bản. Sau đó, sau văn bản đó, chèn một shortcode sẽ hiển thị danh sách bài đăng, sau đó thêm văn bản dạng tự do khác sau đó. Suy nghĩ của tôi là họ sẽ có thể chèn một shortcode mà sẽ xuất ra các bài viết. Bằng cách này, họ có thể chỉ cần thêm shortcode nơi họ muốn các bài viết xuất hiện.Gọi WordPress get_template_part từ bên trong một hàm shortcode hiển thị mẫu đầu tiên
Tôi hiện có logic truy xuất các bài đăng được tách riêng trong tệp riêng của nó. Hiện nay tôi bao gồm nó trong một trang bằng cách đơn giản bằng cách sử dụng get_template_part()
chức năng:
get_template_part('donation', 'posts');
Tôi nhìn vào cách tạo một shortcode và bao gồm đoạn mã sau vào tập tin functions.php
của tôi để tạo shortcode:
add_shortcode('donation-posts', 'fnDonatePosts');
function fnDonatePosts($attr, $content)
{
get_template_part('donation', 'posts');
}
donation-posts.php
đang được thực thi đúng cách và các bài đăng xuất hiện, tuy nhiên, chúng luôn được định vị TRƯỚC KHI nội dung và không ở vị trí đặt mã ngắn.
Tôi đã thử xóa chức năng get_template_part()
và chỉ xuất một số văn bản và hoạt động tốt. Vì vậy, tôi hiểu rằng get_template_part()
có thể không đúng cách để làm điều này, tuy nhiên, tôi đã không thể phát hiện ra một cách để làm những gì tôi đang cố gắng làm (Tôi chắc chắn rằng có một cách ... Tôi chỉ cần thiên đường không tìm thấy nó).
Tôi đã thử:
include(get_template_directory(). '/donation-posts.php');
include_once(get_template_directory(). '/donation-posts.php') :
Nhưng những xử lý dừng lại một khi họ nhấn mã PHP trong file bao gồm.
Tôi cũng đã cố gắng:
$file = file_get_contents(get_template_directory(). '/donation-posts.php');
return $file;
Nhưng điều này chỉ trả về các nội dung của tập tin (như tên hàm chỉ ra) có nghĩa là nó không thực hiện kịch bản PHP để trả lại bài đăng nào.
Có ai đã thực hiện việc này trước đây không?
Xin lỗi đã mất quá nhiều thời gian để tôi phản hồi nhưng tôi có rất nhiều dự án trên đĩa và đây là dự án Pro-Bono để phù hợp với các ưu tiên. Dù sao, sửa chữa của bạn chỉ là những gì tôi cần! Cảm ơn bạn! –
Bạn được chào đón :-) –
nó là một giải pháp xấu xí như vậy nhưng nó là tốt nhất (chỉ?) Một. – Stefan