У меня возникают трудности при создании собственного продукта WooCommerce. L oop.
. В процессе работы я столкнулся с несколькими вопросами, которые были бы действительно полезны, если бы на них можно было ответить.
В настоящее время я работаю с этим блоком кода:
ARCHIVE-PRODUCT. PHP (перемещено в дочернюю тему -> woocommerce / archive-product. php):
<?php
/**
* @see https://docs.woocommerce.com/document/template-structure/
* @package WooCommerce/Templates
* @version 3.4.0
*/
defined( 'ABSPATH' ) || exit;
get_header();
$display_count = $atts['per_page'];
echo $display_count; // NO value - How do I access this?
$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
echo $page; // returns 1 - CORRECT;
$offset = ( $page - 1 ) * $display_count;
echo $offset; // returns 0 - CORRECT;
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => $atts['per_page'],
'page' => $page,
'offset' => $offset,
'orderby' => $atts['orderby'],
'order' => $atts['order']
); ?>
<?php
$loop = new WC_Product_Query( $args );
if ( $loop->have_posts() ) :
// do_action( 'woocommerce_before_shop_loop' );
woocommerce_product_loop_start();
?>
<div id="product-list">
<?php
while ( $loop->have_posts() ) :
$loop->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
?>
</div>
<?php
woocommerce_product_loop_end();
do_action( 'woocommerce_after_shop_loop' );
else :
do_action( 'woocommerce_no_products_found' );
endif;
wp_reset_postdata();
do_action( 'woocommerce_after_main_content' );
do_action( 'woocommerce_sidebar' );
get_footer(); ?>
Возможно, моя ошибка сразу очевидна.
По мере того, как я прохожу свой код, я выделю вопросы, с которыми столкнулся, и не могу найти ответы.
Начиная с строка:
$display_count = $atts['per_page'];
echo $display_count; // NO value - How do I access this?
Насколько я понимаю, эти переменные ($atts['per_page']
, $atts['order_by']
, $atts['order']
) были включены сюда: /includes/class-wc-shortcodes.php
.
Однако я могу только см. этот атрибут, настроенный для отдельных страниц продукта, если я не ошибаюсь?
Могу ли я использовать переменные, установленные в $ atts []? Это также касается использования этих переменных далее вниз по странице в массиве $ args
Как мне настроить их, чтобы я мог их использовать?
Где хранятся и изменяются эти значения?
При записи пользовательского сценария разбиения на страницы AJAX в файл функций. php эти переменные легко доступны и здесь ? Если нет, как я могу их настроить?
$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
echo $page; // returns 1 - CORRECT;
Настройка переменной страницы, чтобы помочь мне отслеживать страницу, на которой я нахожусь.
$offset = ( $page - 1 ) * $display_count;
echo $offset; // returns 0 - CORRECT;
Создание переменная смещения, помещаемая в аргументы, чтобы можно было сказать, сколько продуктов будет смещено, очень пригодится при разбивке на страницы.
$loop = new WC_Product_Query( $args );
Построение l oop продуктов, связанных с $ args
Это лучший обработчик запросов для использования? Я видел множество других, таких как:
$loop = new WP_Query( $args );
$loop = new wc_get_products( $args );
Конец кода, которым я являюсь просто пытаюсь вывести найденные продукты, используя как можно большую часть структурирования базового шаблона WooCommerce.
РЕДАКТИРОВАТЬ: В идеале это также покажет мне, как использовать WooCommerce l oop так как я использовал плагин, добавляемый к плагину WooCommerce, который помогает мне переупорядочивать продукты в индивидуальном порядке. Это заказной список товаров, который я sh смогу вытащить.