Created
December 7, 2016 13:10
-
-
Save davidwilliamdacosta/3a2fce4c69f227d3a195ad3d6c24f10c to your computer and use it in GitHub Desktop.
Exibir produtos sem estoque final da pagina Woocommerce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Order product collections by stock status, instock products first. | |
*/ | |
class iWC_Orderby_Stock_Status | |
{ | |
public function __construct() | |
{ | |
// Check if WooCommerce is active | |
if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) { | |
add_filter('posts_clauses', array($this, 'order_by_stock_status'), 2000); | |
} | |
} | |
public function order_by_stock_status($posts_clauses) | |
{ | |
global $wpdb; | |
// only change query on WooCommerce loops | |
if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag())) { | |
$posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) "; | |
$posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby']; | |
$posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where']; | |
} | |
return $posts_clauses; | |
} | |
} | |
new iWC_Orderby_Stock_Status; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Se você estiver usando widgets de catálogo de produtos, pode ser que não funcione (que foi o meu caso). A maneira que consegui foi indo ali na aba de produtos e filtrei para produtos fora de estoque, depois fui alterando as datas de postagem para serem as primeiras publicadas, exemplo: se seu produto foi publicado dia 15 em tal horário, altere a data do produto fora de estoque para o dia 14 em tal horário. Assim ele aparece como último no catálogo. Observação: no widget de catálogo, precisa está filtrado por data, se não, não irá funcionar. Espero ter ajudado!:)