2017-03-05 14 views
1

Woocommerceを使用してチェックアウトフォームを送信した現在のユーザーのプロファイルへのリンクを含めたいとします。WooCommerceで非表示のチェックアウトフィールドを追加していますか?

隠しフィールドに自動的にこのような現在のユーザーの著者のリンクを配置すること、である:example.com/author/username

私は、チェックアウトフォームで隠しフィールドを追加することでこれを実現したいです。だから私はこれを好きなものを書くだろうリンクを取得する:

<?php 

$currentUser = get_current_user_id(); 

$user = get_user_by(‘id’, $currentUser); 

$userUrl = get_bloginfo(‘home’).’/author/’.$user->user_login; 

echo $userUrl; 
?> 

私の質問はどのようにチェックアウトフォームでこのタイプの隠しフィールドを作成できますか?

ありがとうございました。

答えて

3

注文を行います。ここで

はそのコードです:

add_action('woocommerce_after_order_notes', 'my_custom_checkout_hidden_field', 10, 1); 
function my_custom_checkout_hidden_field($checkout) { 

    // Get an instance of the current user object 
    $user = wp_get_current_user(); 

    // The user link 
    $user_link = home_url('/author/' . $user->user_login); 

    // Output the hidden link 
    echo '<div id="user_link_hidden_checkout_field"> 
      <input type="hidden" class="input-hidden" name="user_link" id="user_link" value="' . $user_link . '"> 
    </div>'; 
} 

次にあなたが、順番にこのように、この隠しフィールドを保存する必要があります:

add_action('woocommerce_checkout_update_order_meta', 'save_custom_checkout_hidden_field', 10, 1); 
function save_custom_checkout_hidden_field($order_id) { 

    if (! empty($_POST['user_link'])) 
     update_post_meta($order_id, '_user_link', sanitize_text_field($_POST['user_link'])); 

} 

コードは、あなたのアクティブなのfunction.phpファイルに行きます子供のテーマ(またはテーマ)、またはすべてのプラグインファイルに保存されます。

コードがテストされ、

+0

こんにちは、ありがとう。注文ページとオーダーメールにこの著者のリンクを表示する方法はありますか? –

+0

誰かがそれを必要とする場合、オーダー電子メールに著者リンクを配置する方法を考えました: 'add_filter( 'woocommerce_email_order_meta_fields'、 'custom_woocommerce_email_order_meta_fields'、10、3); 関数custom_woocommerce_email_order_meta_fields($フィールドは、$ sent_to_admin、$順序){ $フィールド[ '_ USER_LINK'] =配列( 'ラベル' => __( 'ユーザーリンク')、 '値' => get_post_meta($順序 - > id、 '_user_link'、true)、 ); return $ fields; } ' –

-1

(など、またはプラグイン・ファイル。)あなたのfunctions.phpファイルにこれを追加

add_action('woocommerce_after_order_notes', 'hidden_author_field'); 

function hidden_author_field($checkout) { 

$currentUser = get_current_user_id(); 
$user = get_user_by(‘id’, $currentUser); 
$userUrl = get_bloginfo(‘home’).’/author/’.$user->user_login; 

    woocommerce_form_field('hidden_author', array(
     'type'   => 'hidden', 
     'class'   => array('hidden form-row-wide'), 
     ), $userUrl); 

} 

このコードはテストされていない、もっとここで読書https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/、ここhttp://woocommerce.wp-a2z.org/oik_api/woocommerce_form_field/です。これがあなたのために働いたのかどうか、問題が何であるのかわからない場合は、教えてください。顧客のすべてのチェックアウトフィールドと同時に提出される隠された値としてwoocommerce_after_order_notesアクションフック、することができますこのユーザーとの隠しフィールドも直接出力「著者リンク」に夢中カスタム機能で

+0

他のいくつかの問題がarised :)最初にそれらを修正しようと取り組んでいます。 –

+0

'' type '=>' hidden''は 'woocommerce_form_field'でサポートされていません。機能の定義については、http://hookr.io/functions/woocommerce_form_field/を参照してください。ここに示すようなカスタムコードを追加する必要があります。https://stackoverflow.com/a/25622464/332188 –

関連する問題