В архиве продуктов Woocommerce при вызове с пользовательской страницы ничего не отображается - PullRequest
1 голос
/ 05 февраля 2020

У меня есть страница магазина woocommerce, которая показывает мне все продукты отлично. Эта страница также настраивается как страница "Магазин" в настройках. Теперь я хочу вторую страницу с именем Home, которая должна использовать тот же шаблон, что и страница магазина. (в основном вторая страница магазина без категорий и некоторых новостей)

home-template.php

<?php /* Template Name: Homepage */ 
    if ( ! defined( 'ABSPATH' ) ) {
        exit; // Exit if accessed directly
    }
    wc_get_template( 'archive-product.php' );
?>

Я использую стандартный шаблон архива-продукта из github woocommerce.

Я вижу загружаемый шаблон, например заголовок, но некоторые функции woocommerce не возвращают ожидаемое значение. woocommerce_before_shop_l oop ничего не возвращает, даже при том, что должен отображаться выпадающий список. woocommerce_product_l oop () возвращает true, но wc_get_loop_prop ('total') возвращает ноль.

Я также пытался переименовать файл на первой странице. php, но это не помогло. Домашняя страница настроена правильно в настройках чтения.

Я пропустил звонок на запрос или это что-то еще? Заранее благодарю за помощь!

1 Ответ

1 голос
/ 06 февраля 2020

Когда WooCommerce создает встроенную страницу магазина, он сохраняет идентификатор созданной страницы в таблице базы данных wp_options с параметром_имя 'woocommerce_shop_page_id'. Когда WordPress загружает страницу, WooCommerce проверяет, равен ли идентификатор страницы загружаемой страницы option_value из option_name 'woocommerce_shop_page_id', а затем выполняет код для генерации HTML страницы магазина. Если вы посмотрели страницу магазина в редакторе страниц, то заметите, что содержимое пусто. Волшебство c выполняется с помощью жестко запрограммированных подпрограмм, которые выполняются для этого специального идентификатора.

Поскольку ваша пользовательская страница имеет другой идентификатор страницы, ни один из пользовательских кодов для создания страницы магазина не будет выполнен. Итак, вам нужно выполнить этот волшебный код c для вашей пользовательской страницы. Это можно сделать, но вам нужно хорошее понимание WooCommerce.

Я предлагаю вам пересмотреть свой дизайн и вместо новой страницы просто настроить существующую страницу магазина, используя действия и фильтры.

...