do_shortcode () trong Trang quản trị


14

Tôi đang sử dụng một vài plugin có mã ngắn ... tuy nhiên, thay vì tạo trang công khai cho nội dung, tôi đã tạo một số trang mới trong quản trị viên bằng cách sử dụng add_menu_pagevà tôi cần biết cách sử dụng do_shortcode()trong ngữ cảnh này.

Khi nó đứng, tất cả các chức năng làm nó nhổ ra chuỗi. Tôi cho rằng đó là vì API shortcode không khả dụng trong trang quản trị.

Làm thế nào để tôi có được xung quanh này? Không có tài liệu nào tôi có thể tìm thấy giải thích cách sử dụng mã ngắn trong Quản trị viên WP ... hoặc thậm chí nếu có thể.


Cụ thể, tôi đang cố gắng sử dụng mã ngắn WooC Commerce trong WP Admin. Tôi ghét thực tế là các plugin không sử dụng WP Backend để quản lý tài khoản / người dùng.


Bất cứ ai cũng đến và quyết định rằng "Tôi không thực hiện bất kỳ nghiên cứu nào" và cho tôi điểm số âm mà không bình luận là vô cùng hữu ích.
dcolumbus

1
Tôi đoán bạn có thể nói mã ngắn dành cho nội dung giao diện người dùng ... Bạn đang cố gắng sử dụng một plugin khác để tạo nội dung cho trang quản trị plugin của riêng bạn?
Damien

@dcolumbus Tôi đồng tình. Tôi đã nhìn thấy một số downvote giả gần đây, chắc chắn nhiều hơn tôi nhớ trong quá khứ. IMO đây là một câu hỏi trung thực (và khá tuyệt vời), vì vậy tôi hiện đang thực hiện một câu trả lời;)
TheDeadMedic

Nếu bạn đã tạo một trang quản trị thì bạn có thể chỉ định đầu ra - tại sao bạn cần / muốn sử dụng do_shortcode(). bạn có thể cung cấp một ví dụ?
Stephen Harris

Đặc biệt tôi đang cố gắng sử dụng mã ngắn WooC Commerce. Quản lý người dùng và trang quản lý tài khoản.
dcolumbus

Câu trả lời:


10

Thay vì gọi do_shortcode()chỉ cần gọi chức năng liên quan đến shortcode.

Thí dụ

Có một shortcode được đặt tên [example]và một chức năng được đăng ký là trình xử lý shortcode:

function example_shortcode( $atts = array(), $content = '' )
{
    extract( 
            shortcode_atts( 
            array (
            'before' => '',
            'after' => '',
            ), 
            $atts 
       )
   );

    return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );

Trong trang quản trị của bạn, bạn chỉ cần gọi chức năng:

echo example_shortcode( 
    array ( 'before' => 'This ', 'after' => '!' ), 
    'works' 
);

Đầu ra : This works!.

Nhanh hơn và đáng tin cậy hơn do_shortcode().


1
Tôi thậm chí đã không nghĩ về điều này! Sau đó, một lần nữa, tôi không bao giờ sử dụng mã ngắn trong quản trị viên (vì bất kỳ lý do gì) và có một lý do để điều tra;)
TheDeadMedic

Tôi không biết tại sao tôi cũng không nghĩ về điều này ... Tôi sẽ thử và báo cáo lại!
dcolumbus

Một nhược điểm của điều này là nó sẽ bị hỏng nếu tác giả plugin tái cấu trúc chức năng gọi lại của shortcode trong tương lai. Các thay đổi đối với chính shortcode có thể sẽ tương thích ngược, nhưng ít có khả năng là tên hàm nội bộ của plugin sẽ có.
Ian Dunn

2

Có vẻ như các API shortcode có sẵn trong các admin, nhưng sản lượng của nó sẽ phụ thuộc vào thẻ shortcode trong câu hỏi.

Các [caption]công trình tích hợp như mong đợi, trong khi[embed] không (điều này là do cách API nhúng "tải lười biếng", và phụ thuộc vào the_contentbộ lọc để chạy, do đó về mặt kỹ thuật không phải là lỗi của API mã ngắn).

Phần kết luận: Nó hoàn toàn phụ thuộc vào cách thức và thời điểm thẻ được đăng ký và những gì nó làm / giả định khi được thực thi.

@dcolumbus Chúng ta đang nói về thẻ nào trong trường hợp của bạn?


1
Ngoài ra, một số thẻ sẽ get_the_ID()trả về ID bài đăng.
Stephen Harris
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.