Отключить шорткод, если статус значения меняется? - PullRequest
0 голосов
/ 17 мая 2018

Нужно включить или отключить шорткод в функции, в зависимости от значения. Например, если кто-то говорит, что покупает лицензионный ключ, чтобы использовать какой-либо шорткод на своем сайте, я бы хотел отключить шорткод, если у него истекает срок действия лицензии. Пример функции, над которой я работал ниже:

my_premium_shortcodes(); // Fires early in my php file

function my_premium_shortcodes(){
    $status     = get_option( 'key_status' );

    if( $status !== false && $status == 'valid' ) { 

        add_shortcode('shortcode_handle_1','shortcode_function_1');
        add_shortcode('shortcode_handle_2','shortcode_function_2');

    } else {

        remove_shortcode('shortcode_handle_1','shortcode_function_1');
        remove_shortcode('shortcode_handle_2','shortcode_function_2');
    }

}

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

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Просто хотел опубликовать обновление.Значение статуса, по-видимому, неправильно читалось предыдущими функциями, которые были в моем коде.По сути, все, что мне нужно было сделать, - это просто получить инструкцию «if» и удалить «else».

Так что это прекрасно работает.читается, иначе шорткод всегда срабатывает.

0 голосов
/ 04 июня 2018

Добавьте код функции шорткода в файл function.php или в файл плагина.

    function my_add_shortcodes() {
        // Add your code here
    }
    add_shortcode( 'myShortcode', 'my_shortcode_function' );

Используйте условие ниже для вызова шорткода в любом файле вашей темы.

$status     = get_option( 'key_status' );
if( $status !== false && $status == 'valid' ) {
    echo do_shortcode('[myShortcode]');
}

Надеюсь, это тебе поможет.

0 голосов
/ 17 мая 2018

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

$status     = get_option( 'key_status' );

if( $status !== false && $status == 'valid' ) {
//add a custom shortcode 
add_action( 'init', 'my_add_shortcodes' );
function my_add_shortcodes() {
add_shortcode( 'myShortcode', 'my_shortcode_function' );
}
else{
//which can also remove 
add_action( 'init', 'remove_my_shortcodes',20 );
function remove_my_shortcodes() {
remove_shortcode( 'myShortcode' );
}
...