看起来像短代码语法或一些PHP问题中的一些问题

时间:2017-10-06 09:33:40

标签: php wordpress

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

我相信我犯了一些语法错误。

帮助将不胜感激。谢谢!

2 个答案:

答案 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');