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
。
我相信我犯了一些语法错误。
帮助将不胜感激。谢谢!
答案 0 :(得分: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 :(得分:-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');