0

カスタム テキスト フィールドを作成しましたが、アクション フックを使用して単一の商品ページに出力できません...

誰かが解決策を提供できれば本当に感謝していますか?

私のコード (functions.php):

    // Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );

// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );


function woo_add_custom_general_fields() {

  global $woocommerce, $post;

  echo '<div class="options_group">';

  // Custom fields will be created here...

    woocommerce_wp_text_input( 
    array( 
        'id'          => '_text_field', 
        'label'       => __( 'My Text Field', 'woocommerce' ), 
        'placeholder' => 'http://',
        'desc_tip'    => 'true',
        'description' => __( 'Enter the custom value here.', 'woocommerce' ) 
    )
);

  echo '</div>';

}

function woo_add_custom_general_fields_save( $post_id ){

// Text Field
    $woocommerce_text_field = $_POST['_text_field'];
    if( !empty( $woocommerce_text_field ) )
        update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) );

}


add_action( 'woocommerce_single_product_summary', 'output_custom_fields' );


function output_custom_fields() {
    echo get_post_meta( $post->ID, '_text_field', true );
}

ありがとう!デニス

4

1 に答える 1

1

@MirzaP がコメントで述べているように、$postは function で定義されていませんoutput_custom_fields()。だから$post->ID働けない

機能させるには(関数で投稿オブジェクトを取得できるようにします)

function output_custom_fields() {
    global $post;

    echo get_post_meta( $post->ID, '_text_field', true );
}

優先度を設定する、フックされたアクションの 3 番目のパラメーターを忘れないでください。これらの優先度は Woocommerce テンプレートで見つけることができます。メタデータを配置する場所に応じて適切な優先度を使用してください。

/**
     * woocommerce_single_product_summary hook
     *
     * @hooked woocommerce_template_single_title - 5
     * @hooked woocommerce_template_single_price - 10
     * @hooked woocommerce_template_single_excerpt - 20
     * @hooked woocommerce_template_single_add_to_cart - 30
     * @hooked woocommerce_template_single_meta - 40
     * @hooked woocommerce_template_single_sharing - 50
 */

したがって、価格の直後にカスタム データを表示する場合は、優先順位を 11 から 19 の間の整数で設定する必要があります。

add_action('woocommerce_single_product_summary', 'output_custom_fields', 15);
于 2016-10-24T14:47:54.827 に答える