Masalah saya adalah ketika pada file plugin utama saya memasukkan file PHP seperti ini:
include(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
include_once(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
require(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
require_once(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
dan pada file itu saya memiliki panggilan ke fungsi WordPress seperti:
add_action('hook', 'callback');
dan saya mendapatkan:
Kesalahan Fatal: Panggil ke add_action fungsi yang tidak terdefinisi ()
Sekarang sebelum Anda mengatakan "gunakan if(**function_exists**('add_action')){
" jika saya menggunakannya maka itu tidak berfungsi.
Pertanyaan-pertanyaan:
- Apa cara yang benar untuk melakukan itu?
- Apa perbedaan antara
include
,include_once
,require
dan kapan saya menggunakan penyihir?
plugin-development
functions
Bainternet
sumber
sumber
WP_PLUGIN_URL
dalam kode Anda di atas :)Jawaban:
Datang terlambat ke pesta ini, tapi inilah cara "WordPress": gunakan
plugin_dir_path( __FILE__ )
, misalnya:Perhatikan bahwa fungsi tidak mengembalikan garis miring untuk filepath.
sumber
__FILE__
akan menghasilkan relatif terhadap file saat ini Anda memanggilnya, jadi jikainclude
pernyataan Anda dilakukan dari subdirektori di dalam struktur file plugin Anda, Anda akan mendapatkan subdirektori kembali juga.require_once(plugin_dir_path(__DIR__).'/myfile.inc');
Saya melihat melalui beberapa plugin yang sebelumnya saya buat untuk melihat berbagai cara saya memasukkan file tambahan di dalam plugin dan saya perhatikan ada dua metode yang dapat Anda gunakan, mungkin ada lebih banyak.
Tentukan direktori plugin Anda
Di dalam plugin Anda memiliki definisi berikut untuk menentukan lokasi plugin saat ini.
Kode contoh:
Cukup memasukkan atau membutuhkan
Anda cukup menggunakan; sertakan, include_once, butuhkan atau require_once di dalam folder plugin Anda dengan merujuk lokasi seperti pada contoh kode di bawah ini. Contoh di bawah ini akan didasarkan pada file di direktori plugin root Anda termasuk file lain dari dalam folder di dalam folder plugin Anda.
Kode contoh:
sumber
Saya akhirnya meninggalkan konstruksi WordPress untuk menyertakan dan menggunakan yang berikut:
Saya tidak berpikir itu akan benar-benar menyelesaikan masalah Anda, yang tampaknya menjadi masalah ruang lingkup, tetapi ini adalah kode yang saya gunakan.
Adapun perbedaan antara include dan butuhkan:
include akan memberikan peringatan jika file tidak ditemukan
mengharuskan akan menimbulkan kesalahan fatal jika file tidak ditemukan
include_once dan require_once tidak akan menyertakan / memerlukan file / kode lagi jika sudah disertakan / diperlukan (perhatikan bahwa sejauh yang saya tahu, ini hanya untuk file tertentu dalam direktori tertentu).
sumber
Pertama, terima kasih untuk semua yang menjawab,
Masalah saya adalah memanggil file yang disertakan dengan url penuh sehingga mereka tidak pergi melalui WordPress. dan itu terjadi karena ketika saya menyatakan pada pertanyaan saya memanggil mereka dari file plugin utama. jadi perbaikannya akhirnya menggunakan:
saya membaca tentang di dukungan WordPress . dan sekali lagi terima kasih telah menjawab!
sumber
Info di atas adalah dari dokumentasi PHP, masalahnya adalah tidak ada yang benar, akan tergantung pada kebutuhan kode, saya memang memerlukan () pada hal-hal penting seperti fungsi, tetapi pada file tema seperti footer atau loop yang saya gunakan include_once atau include karena saya bisa menangani peringatan dan mengatakan kepada pengguna / pengunjung yang melakukan kesalahan bukan hanya fatal_error
sumber
Hai @ בניית אתרים:
Ketika WordPress sedang memuatnya, ia mendefinisikan
add_action()
fungsi sebelum mencoba memuat plugin apa pun. Fakta Anda mendapatkan kesalahan memberitahu saya bahwa Anda melakukan sesuatu yang aneh atau ada yang salah dengan pemasangan WordPress Anda.Siapa yang membuat "plugin" Anda dimuat? Apakah Anda menggunakan
include*()
ataurequire*()
untuk memuatnya, mungkin diwp-config.php
file Anda ?sumber
atau
atau
Catatan: untuk enqueu file .css & .js
admin_enqueue_scripts
di dalam penggunaan pluginplugin_dir_url( __FILE__ )
sumber
Setiap kali Anda membuat file baru di dalam direktori kerja Anda, Anda harus memasukkannya setiap kali. Tetapi cobalah metode untuk memindai directroy Anda dan melampirkannya secara otomatis, tidak hanya file php, Yang membantu untuk memasukkan php, file js dan css dengan benar di kedua sisi (backend, ujung depan).
http://kvcodes.com/2014/05/wordpress-theme-development-include-files-automatically/
sumber