【问题标题】:Woocommerce custom fields - Select field - how to do a blank placeholderWoocommerce 自定义字段 - 选择字段 - 如何做空白占位符
【发布时间】:2018-05-30 05:20:03
【问题描述】:

我在 woocommerce 常规选项卡中的价格下方创建了一个自定义字段:

function woo_add_custom_general_fields() {

  global $woocommerce, $post;

  echo '<div id="wc-after-price">';

     woocommerce_wp_select( 
             array( 
                  'id'      => '_select', 
                  'label'   => __( 'Price Label', 'woocommerce' ), 
                  'options' => array(
                    'blank'         => __( 'Choose one or leave blank', 'woocommerce' ),
                    'Per 50 Words'  => __( 'Price is per 50 words', 'woocommerce' ),
                    'Per 100 Words' => __( 'Price is per 100 words', 'woocommerce' ),
                    'Per Page'      => __( 'Price is per page', 'woocommerce' )
                    )
                 )
      ); 

  echo '</div>';

}

我的保存功能如下:

function woo_add_custom_general_fields_save( $post_id ){

    $woocommerce_select = $_POST['_select'];
    if( !empty( $woocommerce_select ) )
        update_post_meta( $post_id, '_select', esc_attr( $woocommerce_select ) );

}

显示输出时一切正常,但我正在努力弄清楚如何不显示第一个选项“空白”。

我下拉列表中的第一个选项'blank' =&gt; __( 'Choose one or leave blank', 'woocommerce' ), 基本上只是一个占位符。我的下拉选择不是强制性的,因此可以留空。

目前,如果我保持下拉菜单不变,它会在输出中显示“空白”。

如何才能将此选项保留为占位符而不显示任何输出?

【问题讨论】:

    标签: php wordpress woocommerce advanced-custom-fields custom-fields


    【解决方案1】:

    您可以将value 保留为空字符串'' 而不是blank

    function woo_add_custom_general_fields() {
    
      global $woocommerce, $post;
    
      echo '<div id="wc-after-price">';
    
         woocommerce_wp_select( 
                 array( 
                      'id'      => '_select', 
                      'label'   => __( 'Price Label', 'woocommerce' ), 
                      'options' => array(
                        ''         => __( 'Choose one or leave blank', 'woocommerce' ),
                        'Per 50 Words'  => __( 'Price is per 50 words', 'woocommerce' ),
                        'Per 100 Words' => __( 'Price is per 100 words', 'woocommerce' ),
                        'Per Page'      => __( 'Price is per page', 'woocommerce' )
                        )
                     )
          ); 
    
      echo '</div>';
    
    }
    

    【讨论】:

    • 在您的save 函数中,确保您使用empty() 检查而不是isset() 来确定它是否传递了实际值。
    • Dhaval 非常感谢您的帮助。我刚刚编辑了我的问题并添加了保存功能供您查看。你能告诉我应该在哪里添加empty()isset() 吗?
    • @JoeBloggs 您已经在使用if( !empty( $woocommerce_select ) ) 进行此操作。因为'' =&gt; __( 'Choose one or leave blank', 'woocommerce' ) 本质上将为占位符文本创建一个empty 值,提交时将在上述检查中丢弃该值。所以代码应该可以在没有任何铰链的情况下工作。
    猜你喜欢
    • 2018-03-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    相关资源
    最近更新 更多