Как отобразить связанный тип пользовательского сообщения на странице одного продукта WooCommerce с помощью настраиваемыхPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как отобразить связанный тип пользовательского сообщения на странице одного продукта WooCommerce с помощью настраиваемых

Сообщение Anonymous »

Кто-нибудь, пожалуйста, помогите мне :)
Итак, вот ситуация: я использую WordPress, и внутри него есть запрос, который я создал с помощью плагина фрагмента кода.< /p>
Используемые плагины:
Продукт: WooCommerce
Настраиваемые поля и настраиваемые сообщения: безопасный код настраиваемых полей
Фрагмент: Код Фрагмент PHP
Вот мой текущий код:

Код: Выделить всё

function my_query_by_post_types1( $query ) {
if ( is_product() && $query->is_main_query() ) {

$term_names = wp_get_post_terms( get_the_ID(), 'product_cat', array( 'fields' => 'names' ) );

if ( $term_names ) {
$query->set( 'post_type', 'news' );
$meta_query = array( 'relation' => 'OR' );

foreach ( $term_names as $term_name ) {
$meta_query[] = array(
'key'     => 'product_category', // The meta key for the custom field in "news"
'value'   => $term_name,
'compare' => 'LIKE',
);
}

$query->set( 'meta_query', $meta_query );
}
}
}
add_action( 'elementor/query/product_related_news', 'my_query_by_post_types1' );

Этот запрос предназначен для использования на одной странице продукта для отображения «новостей» (настраиваемый тип публикации). Тип сообщения «новости» имеет настраиваемое поле, которое представляет собой поле флажка с именем Product_category. Цель состоит в том, чтобы отображать сообщения «новости» на одной странице продукта, которые имеют ту же категорию Product_category, что и категория продукта.
Созданный мною фрагмент кода успешно отображает раздел новостей на одной странице продукта. . Однако он отображает все новости из базы данных, а не фильтрует их по категории продуктов. Например, хотя отображаемый продукт относится к категории «Компьютер», а раздел новостей содержит настраиваемые поля с возвращаемым значением «Компьютер», механизм фильтрации не работает должным образом. Следовательно, отображаются все новости, независимо от связанных с ними категорий продуктов.
Я пробовал несколько методов:
  • Использование таксономии вместо настраиваемых полей в качестве категорий для созданного мной настраиваемого типа сообщений «Новости».
  • Использование «fields => name» для получения имен из сгенерированного массива. автор wp_get_post_terms.
Настраиваемые поля сообщений
Настройки настраиваемых полей
Я пробовал отладку, используя приведенный ниже код, но сообщений, соответствующих созданному мной фильтру, найдено не было. Несмотря на то, что я добавил новость с категорией продукта, точно такой же, как продукт, который показываю.

Код: Выделить всё

function my_query_by_post_types1($query) {
if (is_singular('product')) {
// Get product categories
$terms = get_the_terms(get_the_ID(), 'product_cat');

if ($terms && !is_wp_error($terms)) {
// Get all category names
$category_names = array();
foreach ($terms as $term) {
$category_names[] = $term->name;
}

if (!empty($category_names)) {
$query->set('post_type', 'news');
$query->set('meta_query', array(
array(
'key'     => 'product_category',
'value'   => $category_names,
'compare' => 'IN'
)
));

// Debug output for admins
if (current_user_can('administrator')) {
echo '';
echo 'Categories found: ' . implode(', ', $category_names) . '
';
// Debug the query object
echo 'Query object:
';
print_r($query->query_vars); // Outputs query parameters
echo '';

if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo get_the_title() .  '
';
}
} else {
echo 'No posts found!';
}

echo '';
}
}
}
}
}
add_action('elementor/query/product_related_news', 'my_query_by_post_types1');
вывод отладки
пример созданной мною новостной публикации

Подробнее здесь: https://stackoverflow.com/questions/792 ... page-using
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»