Apa yang dilakukan wp-embed.min.js di WordPress 4.4?

52

Pertanyaan

  1. Apa yang dilakukan wp-embed.min.jsfile? Saya perhatikan itu ditambahkan ke akhir footer halaman blog saya.
  2. Bagaimana saya bisa menyingkirkannya?

Upaya

Setelah beberapa googling dan saya menemukan Embeds di Codex. Mengapa WordPress berpikir saya ingin menambahkan video, dll. Ke halaman saya secara default?

Lingkungan Hidup

WordPress 4.4

Pmpr
sumber
1
Ini mungkin terkait dengan wp sebagai oEmbed server dan bukan klien
Mark Kaplun
Saya mencoba menambahkan jawaban pada bagian pertama dari pertanyaan
prosti
11
Cukup yakin itu hanya ada untuk memperlambat halaman Anda.
Josh Habdas
@MarkKaplun benar. wp-embed.min.js memungkinkan Anda untuk menyematkan posting dari situs WordPress jarak jauh ke situs WordPress Anda sendiri, melalui oEmbed.
Jonathan Nicol

Jawaban:

61

Saya akhirnya bisa menyingkirkan itu menggunakan ini:

function my_deregister_scripts(){
  wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );
Pmpr
sumber
4
Menambahkannya pada tindakan "wp_enqueue_scripts", juga tampaknya berfungsi.
andershagbard
7
Ya, saya akan menggunakan wp_enqueue_scriptspengait dan wp_dequeue_script()bukannyawp_deregister_script()
swissspidy
@swissspidy wp_dequeue_script( 'wp-embed' );tidak akan berfungsi - bisakah Anda menjalankan tes? Rekomendasi kap berlaku.
Aziz
Di bawah WordPress 4.6, skrip @Trix berfungsi dengan baik. Terima kasih!
Sebastian
1
Menggunakan ini tidak akan lulus mereka cek .
lowtechsun
20

Saya tiba di utas ini dengan pertanyaan yang sama: Apa yang dilakukan file wp-embed.min.js? Tidak ada jawaban saat ini yang menjawab pertanyaan ini dengan akurat.

Pertama, saya cukup yakin bahwa embed.min.js tidak berhubungan dengan menyematkan konten oEmbed dari penyedia lain: Vimeo, YouTube dll. Anda dapat menghapus embed.min.js dan embed tersebut akan terus berfungsi.

Ini terkait secara khusus dengan menyematkan posting WordPress dari blog / situs web orang lain. Menyematkan posting WordPress di dalam posting WordPress: so meta! Fitur ini diperkenalkan di WordPress 4.4 .

Menonaktifkan embed.min.js akan menghentikan fitur itu bekerja di situs Anda.

Anda dapat mengujinya dengan mudah: Tempel URL kiriman WordPress orang lain ke salah satu kiriman Anda sendiri. WP harus mengonversi URL itu menjadi widget yang disematkan. Saat Anda melihat posting Anda di front-end, Anda akan melihat bahwa markup Anda berisi blockquote dan iframe. Blockquote adalah tautan hanya teks ke posting blog yang Anda lekatkan, sedangkan sumber iFrame adalah URL posting blog dengan /embed/menambahkan: titik akhir oEmbed-nya.

embed.min.js menyembunyikan blockquote dan mengungkapkan iframe. Ini juga melakukan beberapa kejahatan lainnya untuk membuat iframe bermain bagus.

Sekarang, coba hapus skrip embed.min.js dari halaman Anda menggunakan salah satu metode yang dijelaskan dalam jawaban lain. Muat ulang halaman Anda dan Anda akan melihat bahwa blockquote terlihat tetapi iframe disembunyikan.

Singkatnya: jika Anda ingin menyematkan posting WordPress orang lain ke dalam posting WordPress Anda sendiri, tinggalkan embed.min.js sendirian. Jika Anda tidak peduli dengan fitur ini maka Anda dapat menghapusnya dengan aman.

Jonathan Nicol
sumber
3
Perhatikan bahwa menghapus embed.jstidak cukup untuk menonaktifkan sematan dan bahkan mungkin mengarah ke perilaku aneh jika tidak dilakukan dengan benar. Untuk sepenuhnya menonaktifkan embed ini, gunakan plugin Disable Embeds yang direkomendasikan secara resmi .
swissspidy
Bekerja seperti yang diharapkan dan dijelaskan dalam kata-tekan 5.x juga.
inrsaurabh
8

Jawaban Trix tidak berhasil untuk saya di WordPress 4.4.1, tetapi saya menemukan solusi dalam kode plugin Disable Embeds WordPress. Tambahkan kode ini (dimodifikasi) di functions.phpfile tema Anda untuk menghapus wp-embed.min.jsfile dari frontend sepenuhnya:

add_action( 'init', function() {

    // Remove the REST API endpoint.
    remove_action('rest_api_init', 'wp_oembed_register_route');

    // Turn off oEmbed auto discovery.
    // Don't filter oEmbed results.
    remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);

    // Remove oEmbed discovery links.
    remove_action('wp_head', 'wp_oembed_add_discovery_links');

    // Remove oEmbed-specific JavaScript from the front-end and back-end.
    remove_action('wp_head', 'wp_oembed_add_host_js');
}, PHP_INT_MAX - 1 );
Nadeem Khan
sumber
3
Menggunakan disable_embeds_init()sebagai nama fungsi adalah ide yang sangat buruk. Jika Anda akan menginstal plugin Disable Embeds suatu hari, langit akan jatuh. Saya sarankan Anda untuk hanya menginstal plugin, tidak ada manfaatnya menambahkan ini ke file functions.php tema Anda. Jika Anda bersikeras melakukannya, Anda harus benar-benar menggunakan nama fungsi lain.
swissspidy
Terima kasih atas saran @swissspidy, saya telah memperbarui nama fungsi
Nadeem Khan
2
Perhatikan bahwa ini tidak hanya akan menghapus JS dari frontend / backend, itu juga akan sepenuhnya menonaktifkan kemampuan untuk menyematkan posting Anda di situs lain, WP Oembed tidak akan berfungsi
Tom J Nowell
Artikel tentang Kinsta menguraikan metode ini menggunakan filter untuk menghapusnya kinsta.com/knowledgebase/disable-embeds-wordpress
Andrew Schultz
4

Saya pikir bagian ini masih hilang.

Apa yang dilakukan oleh file wp-embed.min.js? Saya perhatikan itu ditambahkan ke akhir footer halaman blog saya.

Jawaban atas pertanyaan ini ada di jalurnya. https://core.trac.wordpress.org/changeset/35708

Sematan: Hapus & karakter dari JS sematan sisip.

Versi WordPress yang lebih lama akan mengonversi karakter & tersebut menjadi &, yang membuat beberapa JS tidak berfungsi. Jika orang-orang menjalankan rilis yang lebih tua, jangan membuat hidup mereka lebih sulit daripada yang sudah ada.

Ini juga akan mencoba mengendus agen pengguna.

prosti
sumber
2
Teks yang Anda kutip ("Hapus & karakter dari inline embed JS" dll.). adalah pesan komit tunggal untuk file tersebut, tetapi tidak menjelaskan tujuan keseluruhan skrip. Saya telah memberikan jawaban saya sendiri yang mudah-mudahan memberi lebih banyak cahaya.
Jonathan Nicol