我有一個 WooCommerce 網站,在單個產品頁面中,我有一個自定義復選框,用于在添加到購物車按鈕之前同意條款,但我試圖在儀表板中添加一個 true/false 欄位,以便可以將此復選框移動到頁面上的不同位置。
我的功能如下所示:
add_action( 'acf/init', "acf_move_checkbox", 10 );
function acf_move_checkbox() {
$move_cart = get_field('move_cart');
if ($move_cart) {
add_action( 'woocommerce_after_single_product', "acf_product_terms", 10 );
} else {
add_action( 'woocommerce_before_add_to_cart_form', "acf_product_terms", 10 );
}
// More code
}
什么都沒有發生,我是沿著正確的路線還是走錯了路?
uj5u.com熱心網友回復:
雖然acf/init類似于 WordPress init 操作,但我不會使用它。
Init 鉤子不斷執行.. 因為您想在單個產品頁面上應用操作,所以最好使用僅適用于該頁面的鉤子,并且只在那些型別的頁面上運行。
例如,您可以使用woocommerce_single_product_summary鉤子。在檢索欄位之前通過硬編碼測驗欄位也可能很有用。
所以你得到:
function action_woocommerce_single_product_summary() {
// Get field
//$move_cart = get_field( 'move_cart' );
// Set true OR false
$move_cart = false;
// When true
if ( $move_cart ) {
add_action( 'woocommerce_after_single_product', 'my_callback_function', 9 );
} else {
add_action( 'woocommerce_before_add_to_cart_form', 'my_callback_function', 9 );
}
}
add_action( 'woocommerce_single_product_summary', 'action_woocommerce_single_product_summary', 1 );
function my_callback_function() {
echo '<p style="color: red; font-size: 20px;">Hello World!</p>';
}
如果上述步驟有效,您可以將硬編碼欄位替換為所需的代碼/欄位
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/433816.html
