3

カスタム フィールドを WooCommerce チェックアウトに追加しようとしていますが、非表示フィールドの出力がないようです。

ではwoocommerce-template.php、隠しフィールドは次のスイッチ ケースに分類されます。

default :
    $field = apply_filters( 'woocommerce_form_field_' . $args['type'], '', $key, $args, $value  );
    break;
}

woocommerce_form_field_hidden非表示フィールドを出力するアクションを追加するにはどうすればよいですか。うまくいかないことを複数試しました。最終的に、関数パラメーターを渡す方法を理解できません。

add_action('woocommerce_form_field_hidden', 'my_form_field_hidden');
if ( ! function_exists('my_form_field_hidden') ) {
    function hp_form_field_hidden() {

        $field = '<p class="form-row ' . implode( ' ', $args['class'] ) .'" id="' . $key . '_field">
            <input type="hidden" class="input-hidden" name="' . $key . '" id="' . $key . '" placeholder="' . $args['placeholder'] . '" value="'. $value.'" />
            </p>' . $after;

        return $field;
    }
}

すべての助けに感謝します。

4

5 に答える 5

7

実際。add_filter 関数の最後のパラメーターは、関数へのパラメーターの数です。

3つ目が優先です。

add_filter('woocommerce_form_field_hidden', 'wcds_form_field_hidden', 999, 4);

function wcds_form_field_hidden($no_parameter, $key, $args, $value) {

    $field = '<p class="form-row ' . implode( ' ', $args['class'] ) .'" id="' . $key . '_field">
        <input type="hidden" class="input-hidden" name="' . $key . '" id="' . $key . '" placeholder="' . $args['placeholder'] . '" value="'. $value.'" />
        </p>';

    return $field;
}

これは私にとってはうまくいきました。

于 2014-09-02T11:36:14.397 に答える
1

必要な情報を引き出して変数に入れることができれば、情報をフォームに入れる必要を完全に回避できます。情報を update_post_meta に直接追加するだけです。

私は COOKIE に保存された値を追加する必要があり、もともとはフォームの非表示フィールドとして追加するように設定されていましたが、代わりにこれを行うことになりました:

/**
 * Add the hidden referral info field to the checkout
 */
add_action( 'woocommerce_checkout_update_order_meta', 'your_hidden_data' );

function your_hidden_data( $order_id ) {
/*
  Put your normal field saves here if needed
*/
$cookie_name1 = $_COOKIE['ref_src']; //Get my Cookie and Assign it
//Your hidden fields
update_post_meta( $order_id, 'Referral_Source', $cookie_name1 );
}
于 2016-06-08T02:59:21.267 に答える
0

あなたがこの質問をしてからしばらく経っていることは知っていますが、私にとってうまくいくものを見つけました。投稿メタに特定の情報を投稿することで、隠しフィールドを回避できました。

これは私がしたことです:

add_action( 'woocommerce_checkout_update_order_meta', 'your_hidden_data' );

function your_hidden_data( $order_id ) {
    /*
      Put your normal field saves here
    */

    //Your hidden fields
    update_post_meta( $order_id, 'YOUR DESIRED KEY NAME', 'YOUR DESIRED VALUE' );
}

「YOUR DESIRED VALUE」がある場所の上に、注文に保存する必要がある数値を返す関数を配置しました。

うまくいけば、これは私自身のアプリケーションにあまり限定されていません。

于 2014-05-07T15:00:34.117 に答える
-1

非表示になっていない他のカスタムフィールドをどのように追加しているかは正確にはわかりませんが、htmlをエコーするだけで済みます。

すなわち

フックを追加します。

add_action('woocommerce_before_checkout_billing_form', array(&$this, 'custom_before_checkout_billing_form') );

次に、独自の関数で次のようにします。

function custom_before_checkout_billing_form($checkout) {

    echo '<input type="hidden" class="input-hidden" name="test" id="test" placeholder="test" value="test" />';
}
于 2013-02-07T20:10:16.080 に答える