【问题标题】:Wordpress - Subscribe to all the things: Convert radio buttons to dropdown menuWordpress - 订阅所有内容:将单选按钮转换为下拉菜单
【发布时间】:2017-08-28 15:48:20
【问题描述】:

如何将此选项列表从单选按钮转换为下拉菜单? 下面是从 single-product.php 模板中提取的代码。

<div class="wcsatt-options-wrapper" <?php echo count( $options ) === 1 ? 'style="display:none;"' : '' ?>><?php

if ( $prompt ) {
    echo $prompt;
} else {
    ?><h3><?php
        _e( 'Choose a subscription plan:', WCS_ATT::TEXT_DOMAIN );
    ?></h3><?php
}

?><ul class="wcsatt-options-product"><?php
    foreach ( $options as $option_id => $option ) {
        ?><li class="<?php echo $option_id !== '0' ? 'subscription-option' : 'one-time-option'; ?>">
            <label>
                <input type="radio" name="convert_to_sub_<?php echo $product->id; ?>" data-custom_data="<?php echo esc_attr( json_encode( $option[ 'data' ] ) ); ?>" value="<?php echo $option_id; ?>" <?php checked( $option[ 'selected' ], true, true ); ?> />
                <?php echo $option[ 'description' ]; ?>
            </label>
        </li><?php
    }
?></ul>

【问题讨论】:

  • @WillBarnwell &lt;ul class="wcsatt-options-product"&gt;&lt;?php foreach ( $options as $option_id =&gt; $option ) { ?&gt;&lt;li class="&lt;?php echo $option_id !== '0' ? 'subscription-option' : 'one-time-option'; ?&gt;"&gt; &lt;label&gt; &lt;select name="convert_to_sub_&lt;?php echo $product-&gt;id; ?&gt;" data-custom_data="&lt;?php echo esc_attr( json_encode( $option[ 'data' ] ) ); ?&gt;"&gt; &lt;option value="&lt;?php echo $option_id; ?&gt;" &lt;?php checked( $option[ 'selected' ], true, true ); ?&gt;&gt; &lt;/option&gt; &lt;/select&gt; &lt;?php echo $option[ 'description' ]; ?&gt; &lt;/label&gt; &lt;/li&gt;&lt;?php } ?&gt;&lt;/ul&gt;

标签: php wordpress drop-down-menu woocommerce radio-button


【解决方案1】:

我得到了这个工作!但是,我很确定我不应该将选中的参数与下拉菜单一起使用......有什么改进建议吗?

<ul class="wcsatt-options-product">
    <select name="convert_to_sub_<?php echo $product->id; ?>" data-custom_data="<?php echo esc_attr( json_encode( $option[ 'data' ] ) ); ?>">
    <?php
        foreach ( $options as $option_id => $option ) {
            ?><li class="<?php echo $option_id !== '0' ? 'subscription-option' : 'one-time-option'; ?>">
                <label>
                    <option value="<?php echo $option_id; ?>" <?php checked( $option[ 'selected' ], true, true ); ?>> <?php echo $option[ 'description' ]; ?> </option>
                </label>
            </li><?php
        }
    ?>
    </select>
</ul>

【讨论】:

    【解决方案2】:

    我不知道您使用的是什么系统,也不知道验证或其他任何东西是如何工作的,但如果不在那里,这样的事情会让您接近:

     <ul class="wcsatt-options-product">
        <select name="convert_to_sub_<?php echo $product->id; ?>">
    <?php
        foreach ( $options as $option_id => $option ) {
            ?><li class="<?php echo $option_id !== '0' ? 'subscription-option' : 'one-time-option'; ?>">
                <option value="<?php echo $option_id; ?>" data-custom_data="<?php echo esc_attr( json_encode( $option[ 'data' ] ) ); ?>" <?php echo($option[ 'selected' ] ? ' selected="selected" : '' ?>><?php echo $option[ 'description' ]; ?></option>                    
            </li><?php
        }
    ?></select></ul>
    

    本质上,您只是将输入元素转换为 &lt;option&gt;'s 并将其全部包装在 &lt;select&gt; 标签中。

    【讨论】:

    • 不幸的是,这没有任何结果。我尝试在循环内移动
    • 代码:1drv.ms/i/s!An0bZeoo150Bh-k5NFl-BqdvbhdndA '
        $option) { ?>
      '
    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 2012-11-29
    • 2014-09-18
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多