Учебники

Как избежать конфликтов шорткода тем и плагинов в WordPress

Как избежать конфликтов шорткода тем и плагинов в WordPress

Мы все испытали это: вы покупаете премиум-тему, которая действительно хороша, и вы также покупаете потрясающий плагин (например, один из моих!), Но объединение темы и плагина просто совершенно не работает. И что? Есть ли в плагине или теме ошибки?

В большинстве случаев это происходит, когда вы используете шорткоды. Представьте, что вы только что купили плагин для обработки «отзывов». Вы внимательно читаете документацию и знаете, что для отображения отзывов вам необходимо включить следующий шорткод [отзывы]. Но когда вы это сделаете, ничего не появится.

Причина, по которой шорткод не заменяется отзывами, заключается в том, что ваша тема И плагин определяют один и тот же точный шорткод.

Поскольку файлы плагинов загружаются до файлов тем, они перезаписываются и в этом случае не учитываются полностью.

Вот почему я хотел показать вам простой способ отменить регистрацию шорткода темы и заменить его шорткодом плагина.

Шаг 1. Создайте простой плагин

Нам нужно создать простой плагин:

<?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 */

Шаг 2: проверьте, существует ли шорткод

Это самый важный шаг. Здесь вы проверяете наличие шорткода. WordPress имеет глобальную переменную $ shortcode_tags, в которой хранится список всех зарегистрированных коротких кодов. Итак, нам просто нужно пройтись по этой переменной и проверить, входит ли в нее шорткод, который мы ищем.

/** * 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; }

Это общая функция, которую мы будем использовать в более конкретной функции, включая слаг шорткода для поиска. Эта функция возвращает TRUE, если шорткод существует, или FALSE, если нет.

Шаг 3. Удалите шорткод и зарегистрируйте новый

Следующая функция использует только что созданную rc_asc_shortcode_exists(). Он просто проверяет наличие шорткода, заменяет его, если он существует, или добавляет шорткод, если он еще не зарегистрирован.

/** * 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' ); } }

Шаг 4. Определите новую функцию короткого кода

Все, что вам нужно сделать, это определить содержимое функции my_testimonials_shortcode (), и все готово!

/** * Creates the new shortcode * * @since 1.0 * * @return void */ function my_testimonials_function() { return 'this replaces the previous shortcode!'; }

Как видите, ранее объявленный шорткод теперь заменен правильным шорткодом.

Источник записи: https://www.wpexplorer.com

Похожие сообщения
Учебники

Как собирать отзывы пользователей на вашем сайте WordPress

Учебники

Как создать тест для ваших пользователей на WordPress (за 7 простых шагов)

Учебники

Полное руководство по RSS и его использованию с WordPress

Учебники

Создание демонстрационных сайтов продуктов WordPress с помощью Ninja Demo