qw
// Добавляем новую колонку в список записей типа 'banner' для главной сортировка
add_filter('manage_banner_posts_columns', function ($columns) {
$columns['acf_banner_sort_order'] = 'Порядок сортировки для главной страницы';
return $columns;
});
add_action('manage_banner_posts_custom_column', function ($column, $post_id) {
if ($column === 'acf_banner_sort_order') {
$sort_order = get_field('banner_sort_order', $post_id);
if (!empty($sort_order)) {
echo esc_html($sort_order);
} else {
echo 'Не указано';
}
}
}, 10, 2);
add_filter('manage_edit-banner_sortable_columns', function ($columns) {
$columns['acf_banner_sort_order'] = 'acf_banner_sort_order';
return $columns;
});
add_action('pre_get_posts', function ($query) {
if (!is_admin() || $query->get('post_type') !== 'banner') {
return;
}
if ($query->get('orderby') === 'acf_banner_sort_order') {
$query->set('meta_key', 'banner_sort_order');
$query->set('orderby', 'meta_value_num');
}
});
// сортировка для баннеров
add_action('elementor/query/bygi_custom_query_othe_delivery', function($query) {
// Проверяем, является ли объект WP_Query
if (!($query instanceof WP_Query)) {
return;
}
// Получаем текущую страницу
$current_page_id = get_queried_object_id();
if (!$current_page_id) {
return;
}
// Получаем значения из поля Relationship
$related_posts = get_field('other-delivery', $current_page_id);
if (!empty($related_posts) && is_array($related_posts)) {
// Ограничиваем количество записей (например, до 50) для предотвращения перегрузки
$related_posts = array_slice($related_posts, 0, 10);
// Настраиваем запрос: сортируем записи в порядке, указанном в Relationship
$query->set('post_type', 'any'); // Замените 'any' на ваш тип постов, если он фиксированный
$query->set('post__in', $related_posts);
$query->set('orderby', 'post__in');
} else {
// Если поле пустое, делаем запрос пустым
$query->set('post__in', [0]); // Исключаем все записи
}
});
add_action('elementor/query/bygi_custom_query_banner', function($query) {
// Проверяем, является ли объект WP_Query
if (!($query instanceof WP_Query)) {
return;
}
// Получаем текущую страницу
$current_page_id = get_queried_object_id();
if (!$current_page_id) {
return;
}
// Получаем значения из поля Relationship
$related_posts = get_field('selected_banners', $current_page_id);
if (!empty($related_posts) && is_array($related_posts)) {
// Ограничиваем количество записей (например, до 50)
$related_posts = array_slice($related_posts, 0, 10);
// Настраиваем запрос: сортируем записи в порядке, указанном в Relationship
$query->set('post_type', 'banner'); // Укажите ваш тип постов, например 'banner'
$query->set('post__in', $related_posts);
$query->set('orderby', 'post__in');
} else {
// Если поле пустое, делаем запрос пустым
$query->set('post__in', [0]); // Исключаем все записи
}
});
qw
// сортировка для баннеров
add_action('elementor/query/bygi_custom_query_othe_delivery', function ($query) {
// Проверяем, является ли объект WP_Query
if (!($query instanceof WP_Query)) {
return;
}
// Проверяем, не выполняется ли запрос в редакторе Elementor
if (defined('ELEMENTOR_VERSION') && \Elementor\Plugin::$instance->editor->is_edit_mode()) {
return;
}
// Получаем текущую страницу
$current_page_id = get_queried_object_id();
if (!$current_page_id) {
return;
}
// Кэшируем результат Relationship-поля
$cache_key = "other_delivery_$current_page_id";
$related_posts = wp_cache_get($cache_key);
if ($related_posts === false) {
$related_posts = get_field('other-delivery', $current_page_id);
wp_cache_set($cache_key, $related_posts, '', 3600); // Кэшируем на 1 час
}
if (!empty($related_posts) && is_array($related_posts)) {
$related_posts = array_slice($related_posts, 0, 10); // Ограничиваем до 10 записей
$query->set('post_type', 'any'); // Замените 'any' на ваш тип постов, если он фиксированный
$query->set('post__in', $related_posts);
$query->set('orderby', 'post__in');
} else {
$query->set('post__in', [0]); // Исключаем все записи
}
});
add_action('elementor/query/bygi_custom_query_banner', function ($query) {
// Проверяем, является ли объект WP_Query
if (!($query instanceof WP_Query)) {
return;
}
// Проверяем, не выполняется ли запрос в редакторе Elementor
if (defined('ELEMENTOR_VERSION') && \Elementor\Plugin::$instance->editor->is_edit_mode()) {
return;
}
// Получаем текущую страницу
$current_page_id = get_queried_object_id();
if (!$current_page_id) {
return;
}
// Кэшируем результат Relationship-поля
$cache_key = "selected_banners_$current_page_id";
$related_posts = wp_cache_get($cache_key);
if ($related_posts === false) {
$related_posts = get_field('selected_banners', $current_page_id);
wp_cache_set($cache_key, $related_posts, '', 3600); // Кэшируем на 1 час
}
if (!empty($related_posts) && is_array($related_posts)) {
$related_posts = array_slice($related_posts, 0, 10); // Ограничиваем до 10 записей
$query->set('post_type', 'banner'); // Укажите ваш тип постов, например 'banner'
$query->set('post__in', $related_posts);
$query->set('orderby', 'post__in');
} else {
$query->set('post__in', [0]); // Исключаем все записи
}
});