Rumah > Soal Jawab > teks badan
P粉8335469532023-08-30 00:08:08
Saya juga menghabiskan tiga jam semalam dan satu jam lagi hari ini cuba memikirkan masalah yang hampir sama. Saya percaya saya kini mempunyai penyelesaian, atau sekurang-kurangnya membantu membawa anda ke arah yang betul. Dokumentasi rasmi WooCommerce nampaknya membezakan antara Tetapan dan Tetapan Contoh (atau saya tidak dapat mencari dokumentasi tentang Tetapan Contoh - lebih banyak lagi dalam perenggan seterusnya).
Berikut adalah berdasarkan apa yang saya temui setakat ini melalui percubaan dan kesilapan. Jika sesiapa mempunyai sebarang dokumentasi "rasmi" tentang perkara ini, saya tidak sabar-sabar untuk mengulas mengenai balasan ini.
Adalah penting untuk membezakan antara "tetapan" dan "tetapan instance". Lihat imej ini untuk perbandingan visual pada bahagian belakang WooCommerce:
Tetapan
Tetapan merujuk kepada "Tetapan Mod Penghantaran Global", iaitu ia muncul dalam submenu global, tetapi tidak dalam kawasan penghantaran. Dokumentasi rasmi WooCommerce menunjukkan cara menggunakan tetapan dan cara menambah halaman tetapan baharu:
https://woocommerce.com/document/shipping-method-api/一个>
https://woocommerce.com/document/settings-api/ p>
Untuk menggunakan fungsi tetapan/API anda mesti nyatakan
$this->supports = array('settings'); // You may also need to include shipping-zones
Dalam pembina anda.
"Tetapan" digunakan/digunakan/disimpan secara global, iaitu secara bebas daripada kawasan penghantaran individu.
Tetapan instance
Tetapan instance ialah tetapan yang boleh disimpan secara individu untuk setiap kawasan penghantaran. Untuk menggunakannya anda perlu menggunakan
$this->supports = array('shipping-zones', 'instance-settings', 'instance-settings-modal');
Dalam pembina anda.
Contoh berikut membolehkan saya memahami perbezaan halus tetapi penting bagi API persediaan contoh:
https://gist.github.com/malkafly/57a5e07fd03d6fd5cab84c6182d84c86
Perbezaan kod dan berkenaan soalan asal anda
Sila ambil perhatian bahawa terdapat perbezaan yang ketara dalam fungsi dan sifat yang tepat bagi kedua-dua API ini. Bergantung pada situasi anda, anda harus memutuskan untuk menggunakan salah satu API ini dan kemudian menggunakan API itu dengan ketat. Anda mengelirukan kedua-dua API, yang mungkin menyebabkan anda tidak boleh menggunakan kaedah penghantaran tersuai anda.
Jika anda ingin menggunakan API tetapan (global):
Jika anda ingin menggunakan API tetapan contoh (khusus wilayah penghantaran):
Pastikan pembina anda kelihatan seperti ini/mengandungi kod berikut:
public function __construct( $instance_id = 0 ) { $this->instance_id = absint( $instance_id ); //... }
Gunakan $this->instance_settings['title'] untuk mendapatkan semula tetapan yang disimpan
Pautan dalam kategori tetapan/tetapan contoh yang sepadan yang saya siarkan di atas mengandungi banyak contoh kod tambahan (berfungsi) untuk setiap kaedah.