如何在echo中添加do_action?

问题描述 投票:0回答:1

也许是个疯狂的问题,但我需要在echo中加入以下代码,但我得到一个错误。基本上,我想隐藏添加到购物车的部分,让未登录的用户看到不同的内容按钮。

这整个代码

<div class="woocommerce-variation-add-to-cart variations_button">
    <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>

    <?php
    do_action( 'woocommerce_before_add_to_cart_quantity' );

    woocommerce_quantity_input(
        array(
            'min_value'   => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
            'max_value'   => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
            'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( wp_unslash( $_POST['quantity'] ) ) : $product->get_min_purchase_quantity(), // WPCS: CSRF ok, input var ok.
        )
    );

    do_action( 'woocommerce_after_add_to_cart_quantity' );
    ?>

    <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>

    <?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>

    <input type="hidden" name="add-to-cart" value="<?php echo absint( $product->get_id() ); ?>" />
    <input type="hidden" name="product_id" value="<?php echo absint( $product->get_id() ); ?>" />
    <input type="hidden" name="variation_id" class="variation_id" value="0" />
</div>

在此

<?php
if ( is_user_logged_in() ) {
    echo 'THAT CODE SHOULD GO HERE';
} else {
    echo 'Welcome, visitor!';
}
?>
php wordpress
1个回答
2
投票

你可以这样做。

    <?php
    if ( is_user_logged_in() ) {
    ?>
       <div class="woocommerce-variation-add-to-cart variations_button">
        <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>

        <?php
        do_action( 'woocommerce_before_add_to_cart_quantity' );

        woocommerce_quantity_input(
            array(
                'min_value'   => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
                'max_value'   => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
                'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( wp_unslash( $_POST['quantity'] ) ) : $product->get_min_purchase_quantity(), // WPCS: CSRF ok, input var ok.
            )
        );

        do_action( 'woocommerce_after_add_to_cart_quantity' );
        ?>

        <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>

        <?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>

        <input type="hidden" name="add-to-cart" value="<?php echo absint( $product->get_id() ); ?>" />
        <input type="hidden" name="product_id" value="<?php echo absint( $product->get_id() ); ?>" />
        <input type="hidden" name="variation_id" class="variation_id" value="0" />
    </div>

<?php

    } else {
        echo 'Welcome, visitor!';
    }
?>

0
投票

拜托,你应该可以自己做这个。但这里是。

<?php
if(is_user_logged_in()){
    echo "<div class='woocommerce-variation-add-to-cart variations_button'>";
    do_action( 'woocommerce_before_add_to_cart_button' );
    do_action( 'woocommerce_before_add_to_cart_quantity' );
    woocommerce_quantity_input(
        array(
            'min_value'   => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
            'max_value'   => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
            'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( wp_unslash( $_POST['quantity'] ) ) : $product->get_min_purchase_quantity(), // WPCS: CSRF ok, input var ok.
        )
    );
    do_action( 'woocommerce_after_add_to_cart_quantity' );
    echo "<button type='submit' class='single_add_to_cart_button button alt'>".echo esc_html( $product->single_add_to_cart_text() );."</button>";
    do_action( 'woocommerce_after_add_to_cart_button' );
    echo "<input type='hidden' name='add-to-cart' value='".echo absint( $product->get_id() );."' />
    <input type='hidden' name='product_id' value='".echo absint( $product->get_id() );."' />
    <input type='hidden' name='variation_id' class='variation_id' value='0' />
    </div>
    }";
} else {
    echo 'Welcome, visitor!';
}
?>

虽然乔纳森的另一个答案是更好的。

© www.soinside.com 2019 - 2024. All rights reserved.