CÂU HỎI VÀ TRẢ LỜI
Đôi khi có những câu hỏi làm phiền bạn và săn lùng bạn sau này trong cuộc sống một lần nữa, và đây là một trong những câu hỏi như vậy.
Câu hỏi này đã cho tôi suy nghĩ về một giải pháp thay thế cho vấn đề. Như tôi đã nói, các trường tùy chỉnh và hộp meta có sẵn để lưu trữ các mẩu dữ liệu meta nhỏ và không hoạt động như một phần mở rộng để đăng nội dung nơi bạn có thể thực thi shortcode và các chức năng. Ngoài ra, như tôi đã nói, phương pháp của bạn không chính xác và không nên được sử dụng
Điều tôi thấy thú vị trong bài viết của bạn là bạn đã sử dụng các trường tùy chỉnh và hộp meta để vô tình hiển thị nội dung tùy chỉnh từ đầu vào của người dùng. Vì vậy, tôi ngồi và nghĩ ra một cách có thể để làm cho công việc này hoạt động và sử dụng chính xác dữ liệu trường tùy chỉnh và dữ liệu hộp meta
Đây là ý tưởng của tôi:
KỊCH BẢN:
LƯU Ý: Điều này có thể được sửa đổi cho phù hợp với bất kỳ nhu cầu
Trên một bài đăng, người dùng muốn / yêu cầu hiển thị nội dung tùy chỉnh động sau bài đăng phù hợp với nhu cầu của mình. Điều này nên năng động. Nội dung phải là một truy vấn tùy chỉnh và người dùng cần chọn nội dung hiển thị bất cứ khi nào anh ta muốn và những gì anh ta muốn
GIẢI PHÁP POSSIBLE:
Mã ngắn sẽ không hoạt động ở đây, vì mã ngắn không thể được thực thi trong các trường tùy chỉnh. Cả hai sẽ không do_shortcode
hoạt động, vì nó không năng động và được mã hóa cứng, một cái gì đó chúng tôi không muốn. Như trong câu hỏi của bạn, chúng tôi sẽ sử dụng các trường tùy chỉnh. Một lần nữa tôi nhấn mạnh, không sử dụng trường tùy chỉnh để thực hiện truy vấn hoặc mã ngắn tùy chỉnh
KẾ HOẠCH:
Chúng tôi sẽ sử dụng trường tùy chỉnh để chỉ lưu các đối số truy vấn của chúng tôi, đó là tất cả. Vì vậy, những gì chúng tôi làm là, chúng tôi tạo ra một trường tùy chỉnh được gọi là custom_query_arguments
. Trong màn hình trình chỉnh sửa bài đăng của bạn, bây giờ bạn sẽ thấy trường tùy chỉnh của mình, sẵn sàng để sử dụng
Bước tiếp theo sẽ là thêm các đối số truy vấn tùy chỉnh vào trường của chúng tôi. Hãy nói rằng, chúng tôi cần hiển thị 3 bài viết từ loại 1 được sắp xếp theo tiêu đề. Vì vậy, các đối số truy vấn của chúng tôi sẽ trông như thế này: ( Ở định dạng chuỗi )
'posts_per_page=3&cat=1&orderby=title'
Đây là những gì bạn nên nhập vào trường tùy chỉnh của bạn. Sau khi nhập, lưu giá trị của trường tùy chỉnh của bạn
Tiếp theo sẽ là xây dựng truy vấn tùy chỉnh trong tệp.php của bạn. Những gì cần thiết ở đây, chúng ta cần lấy giá trị từ trường tùy chỉnh của chúng ta, đây thực sự là đối số truy vấn của chúng ta và đưa nó đến một phiên bản mới WP_Query
để truy xuất các bài đăng. Chúng ta cũng cần kiểm tra xem chúng ta có thực sự có một giá trị được lưu trong trường tùy chỉnh đó hay không, nếu trường tùy chỉnh trống, không hiển thị gì cả
MẬT MÃ:
Bạn có thể thử một cái gì đó như thế này trong single.php ngay sau bài đăng duy nhất.
$args = get_post_meta( get_queried_object_id(), 'custom_query_arguments', true );
// check if the custom field has a value
if( ! empty( $args ) ) {
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}
}
Nếu người dùng muốn xóa truy vấn tùy chỉnh, anh ta chỉ cần xóa giá trị của trường tùy chỉnh và để trống trường tùy chỉnh. Nếu anh ta cần hiển thị cùng một truy vấn nhưng từ loại 10 và tổng cộng 5 bài đăng, anh ta chỉ có thể thay thế giá trị ban đầu bằng giá trị sau
'posts_per_page=5&cat=10&orderby=title'
THÔNG BÁO
Điều quan trọng là sử dụng đúng synatx và định dạng khi nhập thông tin vào các trường và hộp meta tùy chỉnh này. Lỗi cú pháp hoặc thông tin không chính xác sẽ dẫn đến đầu ra không mong muốn hoặc thậm chí lỗi nghiêm trọng. Điều quan trọng là để cho khách hàng của bạn biết thông tin đó
CÂU TRẢ LỜI
Tôi không hiểu những gì bạn đang cố gắng thực hiện, nhưng từ những gì tôi có thể nói với bạn, đó là hai điều riêng biệt
LỰA CHỌN 1
apply_filters('the_content', $content);
được sử dụng để áp dụng các bộ lọc nội dung cho nội dung bài chưa được lọc, thường xuất phát từ việc sử dụng $post->post_content
. Các bộ lọc này bao gồm bộ lọc nổi tiếng wp_autop
có thêm thẻ p vàothe_content()
apply_filters('the_content', $content);
được sử dụng thông thường trong việc kết hợp với get_posts
nơi người ta làm việc trực tiếp với các WP_Post
đối tượng mà không sử dụng setup_postdata( $post )
, điều này làm cho các thẻ mẫu như the_content()
có sẵn để sử dụng
LỰA CHỌN 2
do_shortcode
được sử dụng để thêm một mã ngắn ở bất cứ đâu trong các tệp mẫu bên ngoài trình soạn thảo văn bản trong phần cuối của trình chỉnh sửa trang, về cơ bản lọc các mã ngắn thông qua các móc của chúng.
Cách sử dụng đúng như sau
Ví dụ: Thêm mã ngắn thư viện trong tệp mẫu
echo do_shortcode( '[gallery]' )
CHỈNH SỬA 1
Từ ý kiến của bạn, tôi sẽ không sử dụng một shortcode nào cả.
Nếu bạn sẽ không thêm một mã ngắn thông qua trình soạn thảo văn bản và sẽ thêm nó trực tiếp (mã cứng) thông qua do_shortcode
một tệp mẫu, tôi chỉ muốn thêm chức năng vào mẫu
Thí dụ:
Nếu bạn có chức năng shortcode sau
function footag_func( $atts ) {
return "foo = {$atts['foo']}";
}
add_shortcode( 'footag', 'footag_func' );
Bạn chỉ có thể gọi hàm trực tiếp trong một mẫu như
echo footag_func();
Cách này nhanh hơn nhiều vì shortcode không cần phải phân tích cú pháp
CHỈNH SỬA 2
Thành thật mà nói ở đây, bạn hoàn toàn làm điều này sai từ chỉnh sửa của bạn. Đó là lý do tại sao tôi không thể hiểu câu hỏi ban đầu của bạn
Đôi khi, tôi cần thêm meta bài đăng trên các bài đăng / trang / loại bài đăng tùy chỉnh để họ có thể thêm mã ngắn (thanh trượt, biểu mẫu liên hệ, v.v.) hoặc chỉ là một văn bản đơn giản. Đó là một văn bản nộp.
Để làm cho shortcode hoạt động, tôi sử dụng tùy chọn 1 .....
Các trường tùy chỉnh không phải là trường văn bản và chắc chắn không có nghĩa là được sử dụng để thực thi mã ngắn và cho vấn đề đó là thanh trượt hoặc biểu mẫu liên hệ. Các trường tùy chỉnh không bao giờ được sử dụng để thay thế trình soạn thảo văn bản trong bài viết và trang.
Như tôi đã nói trước đây, apply_filters('the_content', $content);
có nghĩa là được sử dụng để áp dụng định dạng cho nội dung bài thô.
Bạn có hai lựa chọn ở đây
Sử dụng do_shortcode
trực tiếp trong các tệp mẫu mà tôi không khuyến nghị vì sử dụng chức năng nhanh hơn vì không cần phải phân tích cú pháp mã ngắn
Sử dụng mã ngắn trực tiếp trong trình soạn thảo văn bản cho trang / bài đăng cụ thể
Tôi thực sự khuyên bạn nên có một cái nhìn mới mẻ về cấu trúc của bạn và những gì bạn muốn đạt được. Các trường tùy chỉnh không phải là trình soạn thảo văn bản và không thể thực thi các đoạn mã ngắn hoặc thanh trượt.
Đề xuất của tôi sẽ là có thể nhìn vào các widget tùy chỉnh hoặc một hệ thống mà bạn có thể sử dụng với các trường tùy chỉnh