当产品的长描述字段为空时,我想隐藏 WooCommerce 产品的“描述”标题。
我试过这个:
// Remove Empty Tabs
add_filter( 'woocommerce_product_tabs', 'yikes_woo_remove_empty_tabs', 20, 1 );
function yikes_woo_remove_empty_tabs( $tabs ) {
if ( ! empty( $tabs ) ) {
foreach ( $tabs as $title => $tab ) {
if ( empty( $tab['content'] ) && strtolower( $tab['title'] ) !== 'description' ) {
unset( $tabs[ $title ] );
}
}
}
return $tabs;
}
Run Code Online (Sandbox Code Playgroud)
但这并没有最终隐藏标题。该标题似乎不是实际的选项卡。
在渲染的源中看起来像这样:
<div class="product-description">
<h3 class="summary-description-title">Description</h3>
</div>
Run Code Online (Sandbox Code Playgroud) php wordpress woocommerce hook-woocommerce woocommerce-theming
我使用这个钩子在商店页面上显示变化。但是,选择变量后,产品图像不会改变。它适用于单个产品页面。刚接触 WordPress 和 PHP,我认为 woocommerce 挂钩的工作方式就像“复制和粘贴”。为什么它不适用于商店页面?它如何适用于商店页面?
add_action( 'woocommerce_before_shop_loop', 'show_production_variations_on_shop_page' );
function show_production_variations_on_shop_page() {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_single_add_to_cart', 30 );
}
Run Code Online (Sandbox Code Playgroud)
woocommerce_applied_coupon当通过挂钩和add_to_cart()功能使用特定优惠券时,我可以将产品添加到购物车
add_action('woocommerce_applied_coupon', 'apply_product_on_coupon');
function apply_product_on_coupon( ) {
global $woocommerce;
$coupon_id = 'mybday';
$free_product_id = 131468;
if(in_array($coupon_id, $woocommerce->cart->get_applied_coupons())){
$woocommerce->cart->add_to_cart($free_product_id, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有办法在同一个回调函数中将其折扣为 0?
我想在正常(折价)价格之前显示产品的销售价格。我知道这与有关get_price_html。默认情况下,输出类似:
<del>regular price</del>
<ins>sale price</ins>
Run Code Online (Sandbox Code Playgroud)
我想更改输出,使其看起来像这样(基本上,两个价格以不同的顺序显示):
<ins>sale price</ins>
<del>regular price</del>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在开发针对woocommerce的商家安全Unipay(MSU)的自定义API,并且需要在成功付款后更改数量.
这是过程:
一切运作良好,但无法找到钩子在哪里以及如何标记所有产品从购物卡支付和更改数量.
我怎样才能做到这一点?
谢谢
当我将下面的代码直接粘贴到其中时thankyou.php,它的工作原理非常好.但是当我试图将其挂钩时woocommerce_thankyou,没有任何反应.
我刚开始使用PHP,
add_action('woocommerce_thankyou', 'test_1', 10, 1);
function test_1() {
$paymethod = $order->payment_method_title;
$orderstat = $order->get_status();
if (($orderstat == 'completed') && ($paymethod == 'PayPal')) {
echo "something";
} elseif (($orderstat == 'processing') && ($paymethod == 'PayPal')) {
echo "some other shit";
} elseif (($orderstat == 'pending') && ($paymethod == 'PayPal')) {
echo "some other shit";
}
}
Run Code Online (Sandbox Code Playgroud) 为了从Storefront主题中删除面包屑,文档声明要添加以下内容functions.php:
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
Run Code Online (Sandbox Code Playgroud)
我在Storefront的子主题中尝试了这个,但它不起作用.追溯woocommerce_breadcrumb,它似乎被添加到storefront_content_top行动中(在文件中<storefront_dir>/inc/woocommerce/storefront-woocommerce-template-hooks.php.我注释掉相应的行,实际上面包屑是隐藏的.
但是,要以正确的方式执行此操作,我尝试使用子主题禁用它
remove_action( 'storefront_content_top', 'woocommerce_breadcrumb', 10 );
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我应该澄清一下,我在一个没有其他代码的新鲜儿童主题中测试它.
如何禁用儿童主题中的面包屑?
如何使用WooCommerce钩子获取订单的旧状态和新状态:woocommerce_order_status_changed?
这是我的代码,但只有$order_id填充..
add_action('woocommerce_order_status_changed','woo_order_status_change_custom');
function woo_order_status_change_custom($order_id,$old_status,$new_status) {
//order ID is filled
//old_status and new_status never
//tested by logging the parameters
}
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用以下代码轻松获取新状态:
$order = new WC_Order( $order_id );
$orderstatus = $order->status;
Run Code Online (Sandbox Code Playgroud)
但是,如何获得之前的订单状态,因为它$old_status是空的?
我已将以下代码添加到我的functions.php文件的底部,它们没有从我的产品页面中删除这些功能。我直接从content-single-product.php页面复制了优先级数字,仍然没有运气!
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10 );
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price',10 );
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt',20 );
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart',30 );
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_meta',40 );
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_sharing' ,50);
remove_action('woocommerce_single_product_summary', 'WC_Structured_Data::generate_product_data()',60 );e
Run Code Online (Sandbox Code Playgroud) 我正在运行一个以TwentySeventeen子主题为主题的项目,而该网站的其余部分没有侧边栏,而WooCommerce似乎有。
例如,商店页面上有它-我已经尝试了一些方法,没有警告或没有任何效果的工作:
我尝试复制archive-product.php到我的主题目录中woocommerce/archive-product.php并删除以下内容:
do_action( 'woocommerce_after_main_content' );
Run Code Online (Sandbox Code Playgroud)
这没用。
然后我尝试做:
remove_action('woocommerce_sidebar','woocommerce_get_sidebar',10);
Run Code Online (Sandbox Code Playgroud)
...这也不起作用。
我找到了这个答案,它确实起作用了,但是并没有使页面全宽(边栏仍然有空间),并且使用该方法对答案进行评论并不是一个好主意。
我也找到了这个答案,但它涉及添加CSS,我想避免这种情况,因为它不是最强大的方法,以防将来类名更改等。
是不是有合适做这个没有潜在影响面的方法是什么?
hook-woocommerce ×10
woocommerce ×10
wordpress ×10
php ×7
orders ×2
product ×2
coupon ×1
price ×1