Cara Mengelakkan Konflik Kod Pendek Tema & Plugin
Kita semua pernah mengalami perkara ini: anda membeli tema premium yang benar-benar hebat, dan anda juga membeli pemalam yang menakjubkan (contohnya salah satu pemalam saya!) tetapi meletakkan tema dan pemalam itu bersama-sama tidak berfungsi sama sekali. Jadi apa? Adakah pemalam atau tema mempunyai pepijat?
Kebanyakan masa, apabila ini berlaku, ia adalah apabila anda menggunakan kod pendek. Bayangkan anda baru sahaja membeli pemalam untuk mengendalikan "testimoni". Anda membaca dokumentasi dengan teliti dan anda tahu bahawa untuk memaparkan testimoni anda perlu memasukkan kod pendek [testimoni] berikut. Tetapi apabila anda berbuat demikian, tiada apa yang muncul.
Sebab mengapa kod pendek tidak digantikan dengan testimoni, adalah kerana tema anda DAN pemalam mentakrifkan kod pendek yang sama.
Memandangkan fail pemalam dimuatkan sebelum fail tema ia ditimpa dan tidak diambil kira sepenuhnya dalam kes ini.
Itulah sebabnya saya ingin menunjukkan kepada anda kaedah mudah untuk membatalkan pendaftaran kod pendek tema dan menggantikannya dengan pemalam.
Langkah 1: Cipta Pemalam Mudah
Kita perlu membuat pemalam mudah:
<?php
/*
Plugin Name: Avoid Shortcodes conflicts
Plugin URL: http://remicorson.com
Description: A little plugin to avoid conflicts bewteen shortcodes
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
Text Domain: rc_asc
Domain Path: languages
*/Langkah 2: Semak Jika Kod Pendek Wujud
Ini adalah langkah yang paling penting. Di sinilah anda menyemak kewujudan kod pendek. WordPress mempunyai pembolehubah global “$shortcode_tags” yang menyimpan senarai semua kod pendek berdaftar. Jadi, kita hanya perlu melalui pembolehubah ini dan semak sama ada kod pendek yang kita cari menjadi sebahagian daripadanya.
/**
* Check if a shortcode is already registered
*
* @since 1.0
*
* @param $shortcode string The shortcode slug to test
*
* @return void
*/
function rc_asc_shortcode_exists( $shortcode = false ) {
global $shortcode_tags;
//echo '<pre>'; var_dump($shortcode_tags); echo '</pre>';
if ( ! $shortcode )
return false;
if ( array_key_exists( $shortcode, $shortcode_tags ) )
return true;
return false;
}Ini ialah fungsi generik yang akan kami gunakan dalam fungsi yang lebih khusus termasuk slug kod pendek untuk dicari. Fungsi ini mengembalikan BENAR jika kod pendek wujud, atau FALSE jika tiada.
Langkah 3: Alih Keluar Kod Pendek & Daftar Kod Baharu
Fungsi seterusnya menggunakan rc_asc_shortcode_exists() yang baru kami buat. Ia hanya menyemak kewujudan kod pendek, menggantikannya jika ia wujud, atau menambah kod pendek jika ia belum didaftarkan.
/**
* Check if a shortcode is already registered and replace it
*
* @since 1.0
*
* @return void
*/
function rc_asc_replace_shortcode() {
$shortcode = 'testimonials';
if( rc_asc_shortcode_exists( $shortcode ) ) {
remove_shortcode( $shortcode );
add_shortcode( $shortcode, 'my_testimonials_function' );
} else {
add_shortcode( $shortcode, 'my_testimonials_function' );
}
}Langkah 4: Tentukan Fungsi Kod Pendek Baharu
Apa yang anda perlu lakukan ialah mentakrifkan kandungan fungsi "my_testimonials_shortcode()", dan anda sudah selesai!
/**
* Creates the new shortcode
*
* @since 1.0
*
* @return void
*/
function my_testimonials_function() {
return 'this replaces the previous shortcode!';
}Seperti yang anda lihat, kod pendek yang diisytiharkan sebelum ini kini digantikan dengan kod pendek yang betul.
