친애하는 StackOverflow의 친구, 을 표시하는 방법을 한 페이지에 판매 제품 만 표시하려면이 Woocommerce 단축 코드Woocommerce은 : 만 예약 판매 제품
[sale_products per_page="12"]
를 사용합니다. 이 단축 코드는 완벽하게 작동하며 단순 품목 및 가변 품목 모두 판매중인 제품 만 필터링합니다. 이제
나는 같은 결과를 얻을 싶습니다하지만 난, 즉, 단지 예정 판매 제품을 보여주기 위해 누구의 판매 가격
Wordpress > products > general > sale price > schedule
에 예정되어 내가 차이점을 찾으려고 제품 만 필요 '정상적인 판매 제품'과 '예정된 판매 제품'사이의 출력에서,하지만 불행히도 나는 아무것도 눈치 못 챘다.
도움 주셔서 감사합니다.
여기에 나중에 참조 할 수 있도록 =================================
확인은 완료 작업 코드. @Palmered 누가 내 문제를 해결해 주셔서 감사합니다!
나는 나의 functions.php에이 코드를 추가/* This creates a Woocommerce shortcode for displaying only scheduled on sale products, both simple and variable ones */
function scheduled_sale_products($atts) {
global $woocommerce_loop,$wpdb;
extract(shortcode_atts(array(
'per_page' => '12',
'columns' => '4',
'orderby' => 'title',
'order' => 'asc'
), $atts));
// Get products on sale
$product_ids_raw = $wpdb->get_results(
"SELECT posts.ID, posts.post_parent
FROM `$wpdb->posts` posts
INNER JOIN `$wpdb->postmeta` ON (posts.ID = wp_postmeta.post_id)
INNER JOIN `$wpdb->postmeta` AS mt1 ON (posts.ID = mt1.post_id)
WHERE
posts.post_status = 'publish'
AND (mt1.meta_key = '_sale_price_dates_to' AND mt1.meta_value >= ".time().")
GROUP BY posts.ID
ORDER BY posts.post_title ASC LIMIT 0,12");
$product_ids_on_sale = array();
foreach ($product_ids_raw as $product_raw)
{
if(!empty($product_raw->post_parent))
{
$product_ids_on_sale[] = $product_raw->post_parent;
}
else
{
$product_ids_on_sale[] = $product_raw->ID;
}
}
$product_ids_on_sale = array_unique($product_ids_on_sale);
$meta_query = array();
$meta_query[] = WC()->query->visibility_meta_query();
$meta_query[] = WC()->query->stock_status_meta_query();
$meta_query = array_filter($meta_query);
$args = array(
'posts_per_page' => $per_page,
'orderby' => $orderby,
'order' => $order,
'no_found_rows' => 1,
'post_status' => 'publish',
'post_type' => 'product',
'meta_query' => $meta_query,
'post__in' => array_merge(array(0), $product_ids_on_sale)
);
ob_start();
$products = new WP_Query(apply_filters('woocommerce_shortcode_products_query', $args, $atts));
$woocommerce_loop['columns'] = $columns;
if ($products->have_posts()) : ?>
<?php woocommerce_product_loop_start(); ?>
<?php while ($products->have_posts()) : $products->the_post(); ?>
<?php wc_get_template_part('content', 'product'); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php endif;
wp_reset_postdata();
return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
}
add_shortcode('scheduled_sale_products', 'scheduled_sale_products');
이제 새 Woocommerce 단축 코드는
[scheduled_sale_products per_page="12"]
무엇 상세한 대답을! @ Pekz0r 감사합니다! 내 코드에 제안을 적용하려했지만 어떤 제품도 볼 수 없습니다. 내 질문을 편집하여 내 단계를 추가하고 아이디어를 올바르게 적용하려고했습니다. 다시 보내 주신 시간에 다시 한번 감사드립니다. – Elena
2 단계와 3 단계에서 실수를 저지른 것이 유감입니다. 게시물을 편집 했으므로 2 단계와 3 단계를 다시 검토하여 위와 같은지 확인하십시오. 그것이 작동하지 않으면 다시 나에게 돌아 가라. – Pelmered
안녕하세요. @Pelmered 다시 감사드립니다! 새 지침에 따라 코드를 편집했습니다. 이제 4 개의 제품을 볼 수 있지만 그 중 하나만 예정된 판매 제품입니다. 다른 제품은 판매중인 제품입니다. 나는 왜 이것이 여기에 나타나는지 다른 사람들이 나타나지 않는지 (그리고이 짧은 코드와 함께 표시되지 않는 다른 판매 제품 및 기타 예정된 판매 제품이 있는지)를 모른다. 표시된 항목 사이의 연관성을 찾으려고 노력 중입니다! – Elena