我想仅为已登录用户显示“货到付款”网关付款。显示可用付款的循环代码是:
<ul class="payment_methods methods">
<?php
if ( $available_gateways = $woocommerce->payment_gateways->get_available_payment_gateways() ) {
// Chosen Method
if ( sizeof( $available_gateways ) )
current( $available_gateways )->set_current();
foreach ( $available_gateways as $gateway ) {
?>
<li>
<input type="radio" id="payment_method_<?php echo $gateway->id; ?>" class="input-radio" name="payment_method" value="<?php echo esc_attr( $gateway->id ); ?>" <?php if ($gateway->chosen) echo 'checked="checked"'; ?> />
<label for="payment_method_<?php echo $gateway->id; ?>"><?php echo $gateway->get_title(); ?> <?php echo $gateway->get_icon(); ?></label>
<?php
if ( $gateway->has_fields() || $gateway->get_description() ) {
echo '<div class="payment_box payment_method_' . $gateway->id . '" style="display:none;">';
$gateway->payment_fields();
echo '</div>';
}
?>
</li>
<?php
}
} else {
echo '<p>'.__( 'Sorry, it seems that there are no available payment methods for your location. Please contact us if you require assistance or wish to make alternate arrangements.', 'woocommerce' ).'</p>';
}
?>
</ul>
有什么想法吗?感谢
答案 0 :(得分:0)
你的意思是使用这样的东西:
<?php if ( is_user_logged_in() ) { ... } ?>
如果您已经知道网关ID,我猜您可以使用一些if条件。
答案 1 :(得分:0)
好的,我来自乌拉圭!,但最好在这里使用英语,如果没有多少人不理解,评论和答案将无法用于社区。 p>
无论如何,如果用户已登录,则is_user_logged_in将返回true,如函数所示。
你已经有了$ gateway-&gt; id;在foreach循环中 。因此,您需要调整某些$ gateway-&gt; id的可见性;如果用户已登录;像这样的东西:
if($gateway->id == 123 && is_user_logged_in()){
// something if user logged in and your gateway id
} else {
// something else
}
您需要将123更改为您的网关ID ...此外,我不知道,但您可以获取网关名称或slug并使用该spite id。试试吧。
Suerte!