Tôi đang viết một plugin WordPress đơn giản sử dụng shortcode. Tôi muốn trang chứa shortcode để có các thẻ <meta>
cụ thể. Điều này có thể không? Và nếu vậy, có cách nào thanh lịch để làm điều đó không?Sử dụng mã ngắn WordPress để thêm <meta> thẻ
Tôi biết rằng tôi có thể thêm <meta>
thẻ bằng móc wp_head
, nhưng tôi muốn nội dung thẻ meta khớp với chuỗi được plugin tạo ra. Tôi có thể di chuyển tất cả các mã vào tiêu đề, nhưng sau đó tôi không chắc chắn làm thế nào để tham khảo nó sau này từ shortcode. Nói cách khác, khi tôi khai báo một biến trong <head>
với một bộ lọc, nó không có sẵn cho các phương thức lớp mà tôi đang gọi bằng shortcode.
Bất kỳ ý tưởng nào?
UPDATE:
Một giải pháp tốt đẹp đã được đề xuất, trong đó hàm điều khiển cho shortcode thêm hành động để móc wp_head:
add_shortcode('fakeshortcode', 'fakeshortcode_handler');
function fakeshortcode_handler() {
function add_meta_tags() {
//echo stuff here that will go in the head
}
add_action('wp_head', 'add_meta_tags');
}
Đây là sưng lên, nhưng vấn đề là wp_head điều đó xảy ra TRƯỚC shortcode được phân tích cú pháp và thêm hành động (vì vậy không có gì được thêm vào đầu bằng mã ở trên ALONE). Để làm cho nó hoạt động, tôi đã mượn giải pháp trong this post. Về cơ bản, nó là một chức năng "nhìn về phía trước" vào bài đăng và xem liệu có bất kỳ mã ngắn nào sắp tới hay không. Nếu có, thì IT sẽ thêm add_action('wp_head'...
.
EDIT: Tôi đã xóa câu hỏi tiếp theo về cách vượt qua biến. Đây là câu hỏi mới here.
Thật tuyệt. Tôi đã không nhận ra rằng shortcode đã được phân tích cú pháp TRƯỚC KHI các hành động wp_head đã xảy ra. Tôi sẽ thử cái này ngay lập tức. Nếu bạn đúng, tôi chắc chắn nó sẽ giải quyết vấn đề của tôi một cách độc đáo! – emersonthis
Nghi ngờ của tôi là chính xác. Hành động wp_head được kích hoạt TRƯỚC KHI mã ngắn được phân tích cú pháp. Vì vậy, giải pháp này không hoạt động chính xác như được mô tả. BAO GIỜ, cách tiếp cận có thể được sửa đổi ... [xem cập nhật của tôi ở trên] – emersonthis
Xin lỗi Emerson, tôi hiểu lầm những gì bạn đang cố gắng làm.Nó KHÔNG được thực thi trước đó. Do đó, tôi đã chỉnh sửa giải pháp của mình để làm cho nó hoạt động đúng cách. – Maxime