Check if( selected() )

时间:2020-02-23 作者:Anake.me

我一直在为我正在制作的主题添加选项。我在选择框中有多个选项时遇到了麻烦。我期待着echo 代码,取决于选项字段中保存的值。

选项

function nikon_woocommerce_shop_width() {
    $shop_width = esc_attr( get_option( \'nikon_woocommerce_shop_width\' ) );
    ?>

    <select name="nikon_woocommerce_shop_width" value="<?php $nikon_woocommerce_shop_width; ?>">
        <option value="1" <?php selected( $shop_width, 1 ); ?> >1/4</option>
        <option value="2" <?php selected( $shop_width, 2 ); ?> >1/3</option>
        <option value="3" <?php selected( $shop_width, 3 ); ?> >1/2</option>
        <option value="4" <?php selected( $shop_width, 4 ); ?> >Full</option>
    </select>

    <?php
}
功能

$woocomemrce_shop_width = esc_attr( get_option( \'nikon_woocomemrce_shop_width\' ) );

function nikon_woocommerce_shop_width_preoutput() {

    if( selected( 1, $woocommerce_shop_width, false ) ) {
        echo \'class="col-3\';
    } else if( selected( 2, $woocommerce_shop_width, false ) ) {
        echo \'class="col-4\';
    } else if( selected( 3, $woocommerce_shop_width, false ) ) {
        echo \'class="col-6\';
    } else if( selected( 4, $woocommerce_shop_width, false ) ) {
        echo \'class="col-12\';
    }

}
add_action( \'nikon_woocommerce_shop_width_output\', \'nikon_woocommerce_shop_width_preoutput\' );
前端HTML

<?php

$woocommerce_shop_class = esc_attr( get_option( \'nikon_woocommerce_shop_class\' ) );
$woocomemrce_shop_width = esc_attr( get_option( \'nikon_woocommerce_shop_width\' ) );

?>

<div id="woocommerce_shop">

    <?php if( selected( 2, $woocommerce_shop_class, false) ) { echo \'\'; } else { echo \'<div class="container">\'; }  ?>

        <div class="row">

            <div <?php echo $woocomemrce_shop_width; ?> <?php do_action( \'nikon_woocommerce_shop_width_output\' ); ?> >

                <?php woocommerce_content(); ?>

            </div>

            <div class="col">

                <?php get_sidebar( \'woocommerce\' ); ?>

            </div>

        </div>

    <?php if( selected( 2, $woocommerce_shop_class, false) ) { echo \'\'; } else { echo \'</div>\'; }   ?>

</div>
我可以echo 仅显示选项,它将显示与已保存选项相关的编号,但我似乎无法确定如何使if 报表工作。

如果您需要更多详细信息,请让我知道!

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

selected 只是一个equals if语句selected 或者不是。它不执行任何特殊检查,它只是为<option> 标签稍微好一点。没有selected 函数,则需要使用三元运算符或临时变量,用于输出表单的代码将非常糟糕。

正如官方文件所说:

输出html选定属性。

说明比较前两个参数,如果选择了相同的标记

https://developer.wordpress.org/reference/functions/selected/

因此,只需比较前两个参数。

您在此处尝试的操作:

} else if( selected( 3, $woocommerce_shop_width, false ) ) {
这只是一种非常复杂且不可靠的方法:

} else if( 3 == $woocommerce_shop_width ) {

相关推荐