Unable to remove single product pages from woocommerce - php

I have added the following code snippet to functions.php after reseaching a lot:
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
This snippet seems to work for a lot of people.
I'm using the Salient wordpress theme, and this code snippet has no effect on the hyperlink wrap on single product grids.
Please HELP!

You should add it to a hook that proceeds when the actions have been set otherwise you won't be able to remove them. The actions should exist after the 'after_setup_theme' hook. Also ensure the hooks are removed with the same priority as they were set with.
function add_remove_hooks() {
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
}
add_action( 'after_setup_theme', 'add_remove_hooks' );

Related

WooCommerce product title cannot be removed on the single product page

I cannot remove the default title of WooCommerce product on single page.
The title doesn't have any tags for me to hide it via css.
I also tried using
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
but still not working.
Does anyone have a solution on this?
Give it a try in the following way
function customise_product_page() {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
}
add_action( 'woocommerce_before_single_product', 'customise_product_page' );

sale_flash badge cannot be removed from woocommerce product loop hook/action

I am trying to remove or edit the "sale!" badge is in woocommrce loop
In the content-product.php,
the comment block says the woocommerce_show_product_loop_sale_flash is hooked with woocommerce_before_shop_loop_item.
However it actually works with woocommerce_after_shop_loop_item_title.
I tried to remove everything from the hook, still, the sales badge still appears:
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating' );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price' );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash' );
The following is also not working:
remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash' );
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash' );
So I really have no idea where the sales badge function is being called from?
I'm not sure why it's not working for you, because all you have to do is use remove_action, the parameters are the hook location being used and the action name. In this case:
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 );
This works, I checked. I was looking for the same thing. Just add it to your functions.php file. It removes the action called woocommerce_show_product_loop_sale_flash from being hooked into the woocommerce_before_shop_loop_item_title hook location.
Perhaps there is a plugin putting it there as well?
In my case, I did not want the sale flash to be inside of the link so I moved it up to be a direct child of the li instead. I did this by first removing the action via the above, and then adding a new action with a new hook location. The new hook location is the same as the one used to open the link, so I had to modify the priority number to make sure it was executed before the link action sharing the hook.
add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_show_product_loop_sale_flash', 5 );

Move payment methods in Woocommerce checkout page

I have to move the payment methods in the checkout page of a Woocommerce website above the order review, but I don't know how. The problem is, that I tried using the following code:
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
add_action( 'woocommerce_after_order_notes', 'woocommerce_checkout_payment', 20 );
But also the "Terms and Conditions" text and the "Place order" button are moving with that. I need to have the payment options, then the order review, and in the end the "Terms and Conditions" text and the "Place order" button.
How can I do that?
Original WC Hook
// includes/wc-template-hooks.php:214
add_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
Your Hook
This will be in your theme or plugin.
// make sure the priority value is correct, running after the default priority.
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
add_action( 'woocommerce_after_order_notes', 'woocommerce_checkout_payment', 20 );
Your hook should run after WC has loaded; so that you can remove it.
function theme_wc_setup() {
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
add_action( 'woocommerce_after_order_notes', 'woocommerce_checkout_payment', 20 );
}
add_action( 'after_setup_theme', 'theme_wc_setup' );
EDIT: Thanks all, didn't know this is still actively searched. Vote up to help other devs!
Template override is necessary (not possible editing functions.php only).
One possible way to achieve what you want is:
Copy payment.php from woocommerce plugin folder to your_child _theme/woocommerce/checkout/ folder.
Open the newly created payment.php file, and add a custom hook just before the line <div class="form-row place-order">. For example:
<?php do_action( 'woocommerce_review_order_and_proceed' ); ?>
In your child theme's functions.php, add the code below to unhook woocommerce_order_review action from it's original place, and hook it to the newly created hook:
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );
add_action( 'woocommerce_review_order_and_proceed', 'woocommerce_order_review', 20 );

Reordering Woocommerce actions on single product page

I'm trying to redesign a Woccommerce single product page with the elements in the following order:
title
product tabs (description/reviews)
price
add to cart button
meta
As I understand it, I can simply remove the actions in my theme's functions.php file and then re-add them with the priorities I want, so I've done this:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 6 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 8 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 99 );
However, no matter what I do with the priority numbers, the product tabs appear at the end. There's obviously something I don't know. Can someone enlighten me?
Aha!
Funny how often you spend ages trying to solve a problem and then as soon as you ask for help you realise what the answer.
The secret is in the question, really...
I have been adding this action
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 6 );
when I should have been adding this:
add_action( 'woocommerce_single_product_summary', 'woocommerce_output_product_data_tabs', 6 );
The crucial difference is the "_after".
It was that simple. Naturally it was adding this action after all the woocommerce_single_product_summary template hooks had been done.

Move Woocommerce Single Products Title

I was trying to move the product title at Woocommerce single product page to different location. The accepted location is just under itemscope itemtype="http://schema.org/Product" and i was trying to remove first the title from current location which is remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 50); but not removed the title from current location.
Another problem is I can't add product title to new location which I have used do_action( 'woocommerce_moved_product_title_position' ); and then add_action('woocommerce_moved_product_title_position', 'woocommerce_template_single_title', 60);
I am using Woocommerce 2.4.13 and WordPress 4.4.1
Please help me to solve this. It'll be great for me.
Weirdly, you must call remove_action from inside a function.
function so_34845641_move_title(){
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 50);
add_action('woocommerce_moved_product_title_position', 'woocommerce_template_single_title', 60);
}
add_action( 'woocommerce_before_single_product', 'so_34845641_move_title' );
Just a suggestion that there are probably enough hooks without needing to add a custom do_action() in the templates.
Run the remove_action inside a function doesn't change anything , but change the priority work for me.
I give you an example:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20);
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30);
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 15 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 10 );
Pay attention and try with differents priorities.

Categories