do_shortcode () di dalam Halaman Admin

14

Saya menggunakan beberapa plugin yang memiliki kode pendek ... namun, alih-alih membuat halaman publik untuk konten, saya telah membuat beberapa halaman baru dalam admin menggunakan add_menu_pagedan saya perlu tahu bagaimana memanfaatkan do_shortcode()dalam konteks ini.

Seperti berdiri, semua fungsi yang dimuntahkan string. Saya berasumsi itu karena API kode pendek tidak tersedia dalam halaman admin.

Bagaimana saya mengatasi ini? Tidak ada dokumentasi yang dapat saya temukan yang menjelaskan cara memanfaatkan kode pendek di dalam WP Admin ... atau jika mungkin.


Khususnya saya mencoba memanfaatkan kode pendek WooCommerce dalam WP Admin. Saya benci fakta bahwa plugin tidak menggunakan WP Backend untuk manajemen akun / pengguna.

dcolumbus
sumber
Siapa pun yang datang dan memutuskan bahwa "Saya tidak melakukan riset" dan memberi saya skor negatif tanpa berkomentar sangat tidak membantu.
dcolumbus
1
Saya kira Anda bisa mengatakan kode pendek untuk konten front end ... Apakah Anda mencoba menggunakan plugin lain untuk menghasilkan konten untuk halaman admin plugin Anda sendiri?
Damien
@columbus saya setuju. Saya telah melihat beberapa downvotes palsu baru-baru ini, tentu lebih dari yang saya ingat pernah melihat di masa lalu. IMO ini adalah pertanyaan yang jujur ​​(dan cukup mengagumkan), jadi saya saat ini menikam jawaban;)
TheDeadMedic
Jika Anda telah membuat halaman admin maka Anda dapat menentukan output - mengapa Anda perlu / ingin menggunakan do_shortcode(). Bisakah Anda memberikan contoh?
Stephen Harris
Khususnya saya mencoba memanfaatkan shortcode WooCommerce. Manajemen pengguna dan halaman manajemen akun.
dcolumbus

Jawaban:

10

Alih-alih memanggil, panggil do_shortcode()saja fungsi yang terkait dengan kode pendek.

Contoh

Ada kode pendek bernama [example]dan fungsi terdaftar sebagai penangan kode pendek:

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

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

Di halaman admin Anda, Anda hanya memanggil fungsi:

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

Output: This works!.

Lebih cepat dan lebih dapat diandalkan daripada do_shortcode().

fuxia
sumber
1
Aku bahkan belum memikirkan ini! Kemudian lagi, saya tidak pernah menggunakan kode pendek di admin (untuk alasan apa pun) & punya alasan untuk menyelidiki;)
TheDeadMedic
Saya tidak tahu mengapa saya belum memikirkan hal ini ... Saya akan mencobanya dan melaporkannya kembali!
dcolumbus
Satu kelemahan dari ini adalah bahwa hal itu akan rusak jika pembuat plugin refactors fungsi panggilan balik shortcode di masa depan. Perubahan pada kode pendek itu sendiri mungkin akan kompatibel ke belakang, tetapi kemungkinan kecil nama fungsi internal plugin tersebut akan muncul.
Ian Dunn
2

Tampaknya shortcode API adalah tersedia di admin, tapi outputnya akan tergantung pada tag shortcode yang bersangkutan.

Built-in [caption]berfungsi seperti yang diharapkan, sedangkan [embed]tidak (ini disebabkan oleh bagaimana embed API "lazy-load" itu shortcode, dan tergantung pada the_contentfilter untuk dijalankan, jadi secara teknis bukan kesalahan shortcode API).

Kesimpulan: Ini sepenuhnya tergantung pada bagaimana & kapan tag terdaftar, dan apa fungsinya / berasumsi ketika dieksekusi.

@dcolumbus Tag mana yang sedang kita bicarakan dalam kasus Anda?

TheDeadMedic
sumber
1
Juga, beberapa tag akan mengharapkan get_the_ID()untuk mengembalikan ID posting.
Stephen Harris