使用$ _SESSION显示/隐藏Woocommerce中的价格

时间:2018-02-05 09:26:49

标签: php wordpress session woocommerce

我想要一个已登录的用户(他们无权访问管理面板),有机会通过单击页脚中的链接来隐藏/显示我的网上商店的价格。我在使用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 中这样做?

1 个答案:

答案 0 :(得分:0)

是的,你可以在functions.php。

中写这个

将admin-post.php用于here

等句柄表单