slwe

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]); // Исключаем все записи
    }
});

 

Теги:
Содержимое
Вам может быть интересно

если нужно только один товар

Добавление полей в wooccomerce blocks

Обновление n8n (aapanel – docker-compose)

Let's work together!