Files
agroexpert/partials/most-read-posts.php
argoexpert press f871c62628 correct agrotop rus
2024-05-27 16:26:16 +03:00

89 lines
2.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
global $wpdb; // Глобальная переменная для работы с базой данных
// Получаем все подрубрики рубрики 740
$excluded_category_ids = array(740); // Начально включаем саму рубрику 740
$child_categories = get_term_children(740, 'category');
if (!empty($child_categories)) {
$excluded_category_ids = array_merge($excluded_category_ids, $child_categories);
}
// Формируем часть запроса для NOT IN оператора
$excluded_category_ids_in = implode(',', array_map('intval', $excluded_category_ids));
/**
$query = $wpdb->prepare("
SELECT DISTINCT p.ID, p.post_title, p.post_content, m.meta_value AS position
FROM $wpdb->posts p
INNER JOIN $wpdb->postmeta m ON p.ID = m.post_id
LEFT JOIN $wpdb->term_relationships tr ON p.ID = tr.object_id
LEFT JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE p.post_type = 'post'
AND m.meta_key = 'top_participation_position'
AND m.meta_value != ''
AND tt.term_id NOT IN ($excluded_category_ids_in)
ORDER BY CAST(m.meta_value AS UNSIGNED) ASC
");
*/
/**
$query = $wpdb->prepare("
SELECT p.ID, p.post_title, p.post_content, m.meta_value AS position
FROM $wpdb->posts p
INNER JOIN $wpdb->postmeta m ON p.ID = m.post_id
WHERE p.post_type = 'post'
AND m.meta_key = 'top_participation_position'
AND m.meta_value != ''
ORDER BY CAST(m.meta_value AS UNSIGNED) ASC
");*/
$excluded_category_id = 740;
// Запрос для получения всех постов с непустым метаполем 'top_participation_position'
$query = "
SELECT DISTINCT p.ID, p.post_title, p.post_content, m.meta_value AS position
FROM $wpdb->posts p
INNER JOIN $wpdb->postmeta m ON p.ID = m.post_id
WHERE p.post_type = 'post'
AND m.meta_key = 'top_participation_position'
AND m.meta_value != ''
ORDER BY CAST(m.meta_value AS UNSIGNED) ASC
";
$top_posts = $wpdb->get_results($query);
if (!empty($top_posts)) {
foreach ($top_posts as $post) {
// Проверка наличия категории или подкатегории с ID 740
$terms = wp_get_post_terms($post->ID, 'category');
$exclude = false;
foreach ($terms as $term) {
if ($term->term_id == $excluded_category_id || $term->parent == $excluded_category_id) {
$exclude = true;
break;
}
}
if (!$exclude) {
$permalink = get_permalink($post->ID);
$title = get_the_title($post->ID);?>
<div class="most-read__link">
<a href="<?php echo esc_url($permalink); ?>" class="most-read__link-inner text-13 link-icon-after">
<?php echo esc_html($title); ?>
</a>
</div>
<?}
}
}?>