我想要一个已登录的用户(他们无权访问管理面板),有机会通过单击页脚中的链接来隐藏/显示我的网上商店的价格。我在使用Woocommerce时可能会在我的解决方案中为自己制造太复杂的东西,很久以前我在会话中工作,所以我非常生疏......我设法隐瞒价格,但我无法形象如何让他们再次展示,特别是以一种不会让人觉得作弊的方式。请注意,我已经检查过用户是否已登录。
代码已更新 我使用我的functions.php开始会话,如下所示:
function myStartSession() {
if(!session_id()) {
session_start();
}
}
function myEndSession() {
session_destroy ();
}
add_action('init', 'myStartSession', 1);
add_action('wp_logout', 'myEndSession');
add_action('wp_login', 'myEndSession');
帮助我设置$_SESSION
<form method="post" action="<?php admin_url( 'admin-post.php' ) ?>">
<input type="hidden" name="action" value="process_form">
<?php if($_SESSION['session_price'] == true) { ?>
<input type="submit" name="sessiondestroy" id="sessionDestroy" onclick="showPricesAgain()" value="Dölj priser"></input>
<?php } else { ?>
<input type="hidden" name="inputsession" value="true">
<?php } ?>
<input type="submit" name="submit" value="Submit">
</form>
函数.php中的代码假设处理表单
add_action( 'admin_post_nopriv_process_form', 'process_form_data' );
add_action( 'admin_post_process_form', 'process_form_data' );
function process_form_data() {
$_SESSION['session_price'] = $_POST['inputsession'];
if($_SESSION["session_price"] == true) {
//Remove single product price
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
//add_action( 'woocommerce_single_product_summary','print_login_to_see', 30 );
//Remove loop price
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
//Remove loop add to cart
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart'); ?>
<style>
.product_list_widget .woocommerce-Price-amount {
display: none !important;
}
.price>.amount {
display: none !important;
}
</style>
<?php }
}
我是否可以在if/else
中使用form
语句,如上所述?现在我调用一个函数来破坏会话,如果会话是真的,我不知道那是不是最好的方法......
现在可能有太多问题,但设置<?php $_SESSION['session_price'] = $_POST['inputsession']; ?>
在表格下方感觉不对。我可以在 functions.php 中以某种方式做到这一点
或者我应该在 header.php 中这样做?