Cara Menghindari Konflik Kode Pendek Tema & Plugin


Kita semua pernah mengalami hal ini: Anda membeli tema premium yang sangat bagus, dan Anda juga membeli plugin yang luar biasa (salah satu milik saya misalnya!) tetapi menggabungkan tema dan plugin tidak berhasil sama sekali. Terus? Apakah plugin atau temanya ada bug?

Seringkali hal ini terjadi saat Anda menggunakan kode pendek. Bayangkan Anda baru saja membeli plugin untuk menangani “testimonial”. Anda membaca dokumentasi dengan cermat dan Anda tahu bahwa untuk menampilkan testimonial Anda perlu menyertakan kode pendek berikut [testimonial]. Namun ketika Anda melakukannya, tidak ada yang muncul.

Alasan mengapa kode pendek tidak digantikan oleh testimonial adalah karena tema DAN plugin Anda menentukan kode pendek yang sama persis.

Karena file plugin dimuat sebelum file tema, file tersebut ditimpa dan tidak sepenuhnya diperhitungkan dalam kasus ini.

Itu sebabnya saya ingin menunjukkan kepada Anda metode sederhana untuk membatalkan pendaftaran kode pendek tema dan menggantinya dengan kode plugin.

Langkah 1: Buat Plugin Sederhana

Kita perlu membuat plugin sederhana:

<?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: Periksa Apakah Kode Pendek Ada

Ini adalah langkah yang paling penting. Di sinilah Anda memeriksa keberadaan kode pendek. WordPress memiliki variabel global “$shortcode_tags” yang menyimpan daftar semua kode pendek yang terdaftar. Jadi, kita hanya perlu memeriksa variabel ini dan memeriksa apakah kode pendek yang kita cari termasuk di dalamnya.

/**
 * 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 adalah fungsi umum yang akan kita gunakan dalam fungsi yang lebih spesifik termasuk slug kode pendek yang harus dicari. Fungsi ini mengembalikan TRUE jika kode pendek ada, atau FALSE jika tidak ada.

Langkah 3: Hapus Kode Pendek & Daftarkan Yang Baru

Fungsi selanjutnya adalah menggunakan rc_asc_shortcode_exists() yang baru saja kita buat. Ia cukup memeriksa keberadaan shortcode, menggantinya jika ada, atau menambahkan shortcode jika belum terdaftar.

/**
 * 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 Kode Pendek Baru

Yang harus Anda lakukan adalah menentukan konten fungsi “my_testimonials_shortcode()”, dan selesai!

/**
 * Creates the new shortcode
 *
 * @since 1.0
 *
 * @return void
 */
function my_testimonials_function() {

	return 'this replaces the previous shortcode!';
}

Seperti yang Anda lihat, kode pendek yang dinyatakan sebelumnya sekarang digantikan oleh kode pendek yang tepat.