
Итак, вот ситуация: я использую 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' );
Созданный мною фрагмент кода успешно отображает раздел новостей на одной странице продукта. . Однако он отображает все новости из базы данных, а не фильтрует их по категории продуктов. Например, хотя отображаемый продукт относится к категории «Компьютер», а раздел новостей содержит настраиваемые поля с возвращаемым значением «Компьютер», механизм фильтрации не работает должным образом. Следовательно, отображаются все новости, независимо от связанных с ними категорий продуктов.
Я пробовал несколько методов:
- Использование таксономии вместо настраиваемых полей в качестве категорий для созданного мной настраиваемого типа сообщений «Новости».
- Использование «fields => name» для получения имен из сгенерированного массива. автор wp_get_post_terms.
Настройка настраиваемых полей
Подробнее здесь: https://stackoverflow.com/questions/792 ... page-using