【发布时间】:2020-10-14 03:55:43
【问题描述】:
我正在尝试在商店页面中创建会话变量,然后我想在结帐页面中显示此变量值。 我在woocommerce功能页面中写了这段代码:
// Creating session variables
add_action( 'template_redirect', 'oturum_degiskeni_olustur' );
function oturum_degiskeni_olustur () {
if ( isset( $_GET['konumu'] ) || isset( $_GET['masa_no'] ) ) {
$konum = isset( $_GET['konumu'] ) ? esc_attr( $_GET['konumu'] ) : '';
$masa = isset( $_GET['masa_no'] ) ? esc_attr( $_GET['masa_no'] ) : '';
// Set the session data
WC()->session->set( 'custom_data', array( 'konum' => $konum, 'masa' => $masa ) );
}
}
// Show session variables in checkout page
add_action('woocommerce_before_checkout_form', 'yeni_alanlar');
function yeni_alanlar($checkout){
$data = WC()->session->get('custom_data');
echo '<div id="custom_checkout_field">';
if( isset($data['konum']) && ! empty($data['konum']) && isset($data['masa']) && ! empty($data['masa']) ){
echo '<p><strong>Konumunuz : </strong>' . $data['konum'] .'<br/><strong>Masanız : </strong>' . $data['masa'] .'</p>';
}
echo '</div>';
}
会话变量的 URL:www.domain.com/shop/?konumu=newyork&masa_no=12
但此代码在用户第二次访问时有效。
例如;用户使用此自定义 URL 并访问商店页面并继续购物车和结帐页面。但是,我的代码不起作用。然后,用户再次访问此自定义 URL 并继续购物车和结帐页面,此时代码正在运行。
第一次访问时它不起作用。 这是为什么?我该如何解决这个问题?
【问题讨论】:
标签: php wordpress session woocommerce hook-woocommerce