WordPress — Похоже, некоторые проблемы в синтаксисе шорткода или некоторые проблемы PHP

function some_shortcode($atts){
ob_start();
extract( shortcode_atts( array(
'option1'   => '',
'option2'      => 1,
'option3'       => 1,
'option4'   => ''
), $atts )
);
$args = array(
'option1' => $option1,
'option2'    => $option2,
'option3'     => $option3,
'option4' => $option4
);
?>
<div class="classa <?php $option4==1 ? 'class2' : '' ?>">
<span><?php echo get_theme_mod('newsletter_line_back'); ?></span>
</div>
<div class="classb <?php $option1==1 ? 'class3' : '' ?>">
<?php if($option2==1) {?>
<h2><?php echo get_theme_mod('kirki_1'); ?></h2>
<?php } ?>
<?php if($option3==1) {?>
<p><?php echo get_theme_mod('kirki_2'); ?></p>
<?php } ?>
//somecodehere
</div>
<?php
return ob_get_clean();
}
add_shortcode('some_shortcode', 'some_shortcode');

Хотя приведенный выше код не генерирует какой-либо фатальной ошибки, он также бросает вызов основной цели.

Предположим, если я напишу это →

[some_shortcode option2="0" option1="1"][/some_shortcode]

ни <h2> исчезает ни class3 печатается.

Я считаю, что я совершаю некоторую ошибку синтаксиса.

помощь будет оценена. Спасибо!

1

Решение

Во-первых, вы не использовали переменную должным образом, как вы ее объявили

 $args = array(
'option1' => $option1,
'option2'    => $option2,
'option3'     => $option3,
'option4' => $option4
);

Я приведу только один пример, следующий вы перебираете .. В этих строках

<div class="classa <?php $option1==1 ? 'class2' : '' ?>">

Целевая переменная массива напрямую не поможет вашему делу сделать что-то

<div class="classb <?php echo $args['option1'] == 1 ? 'class3' : '' ?>">

и да, у вас нет echo там тоже … 🙂

Вы должны напечатать этот класс правильно !!

Наслаждайся этой работой на моем ноутбуке ..

1

Другие решения

Вот правильный код.

function some_shortcode($atts){
ob_start();
extract( shortcode_attr( array(
'option1'   => '',
'option2'      => 1,
'option3'       => 1,
'option4'   => ''
), $atts )
);
$args = array(
'option1' => $option1,
'option2'    => $option2,
'option3'     => $option3,
'option4' => $option4
);
?>
<div class="classa <?php $option4==1 ? 'class2' : '' ?>">
<span><?php echo get_theme_mod('newsletter_line_back'); ?></span>
</div>
<div class="classb <?php $option1==1 ? 'class3' : '' ?>">
<?php if($option2==1) {?>
<h2><?php echo get_theme_mod('kirki_1'); ?></h2>
<?php } ?>
<?php if($option3==1) {?>
<p><?php echo get_theme_mod('kirki_2'); ?></p>
<?php } ?>
//somecodehere
</div>
<?php
return ob_get_clean();

}
add_shortcode (‘some_shortcode’, ‘some_shortcode’);

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector