У меня возникла проблема с тем, чтобы заставить работать одну инструкцию PHP с WordPress.
По сути, я хочу вот что:

  • Возврат вывода на основе выбора пользователя

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

function display($type, $status) {
$html ='';
if($type == null) {
    $html = "<?php echo do_shortcode[contact-form-7 id='7' title='Campaign monitor']');?>";
}else if($type == "ios") {
    if ($status == "y") 
    $html = "IOS";
}else if($type == "android") {
    if ($status == "y") 
    $html = "ANDROID";
}
echo $html;

}

Итак, как вы можете видеть, в зависимости от того, что выбрано, например

 <?php echo display(ios, y); ?>

Он отображает IOS на моем веб-сайте, однако все становится интересно, когда тип равен нулю, например.

 <?php echo display(); ?>

Это возвращает следующее

<!--?php echo do_shortcode[contact-form-7 id='7' title='Campaign monitor']');?-->

Сразу же мой PHP закомментирован, и я ничего не могу сделать, чтобы он заработал.
Хотя я понимаю, что это не лучшая практика делать это таким образом (возвращая необработанный php), у меня нет другого способа сделать это.

Есть ли способ решить эту проблему?
Я пробовал плагин EXEC-PHP, а также плагины PHP Code for Posts и Pages.

-1
Jason 23 Фев 2016 в 00:10

2 ответа

Лучший ответ

Не совсем уверен, какой эффект вы хотите, но вы сохраняли строку в html из вашего do_shortcode. Я предполагаю, что вы путаете переменные разрешения php в двойных кавычках с разрешенными функциями. Не так. Это должно быть то, что вы ищете.

function display($type, $status) {
    $html ='';
    if($type == null) {
        $html = do_shortcode('[contact-form-7 id="7" title="Campaign monitor" ]');
    }else if($type == "ios") {
        if ($status == "y") 
        $html = "IOS";
    }else if($type == "android") {
        if ($status == "y") 
        $html = "ANDROID";
    }
    echo $html;

}
1
David 23 Фев 2016 в 01:51

Попробуйте это, так как это помогает сократить код и делает функцию более понятной. Предполагается, что если тип устройства не указан выше, вы хотите отобразить регистр по умолчанию. Предполагается, что если вашего устройства нет в списке, в данном случае ничего, кроме Android и iOS, оно должно отображать регистр по умолчанию, то есть ваш шорткод CF7. ЕСЛИ вы хотите указать другие параметры, их нужно сделать ВЫШЕ «по умолчанию». Как указано в комментариях в другом месте, это PHP, поэтому это обработка на стороне сервера.

<?php 
function display($type, $status){
    switch ($type){
        case "ios":
            $html = "IOS";
            break;
        case "android":
            $html = "Android";
            break;
        default:
            $html = "do_shortcode[contact-form-7 id='7' title='Campaign monitor']";
            break; 
    }
    if($status == "active"){
        echo $html;
    }
}
?>
1
Anna Shaw 22 Фев 2016 в 21:36