• Решено Anonymous User 20734940

    (@anonymized-20734940)


    Добрый день, я не разработчик, но уже несколько дней выкурил мануалы, пытаясь решить задачу. Есть важные записи в шапке, я хочу, чтобы для текущей страницы, пользователю не отображалась эта же страница. Я использую следующий код. По логике, всё должно работать. Но исключающая запись, всё равно попадает в результат.
    Как мне кажется проблема в самом Wp_query, посмотрите, пожалуйста.

    <?php
        $object = get_queried_object();
        $_object_id = $wpdb->get_col( "SELECT post_id FROM <code>wp_postmeta</code> WHERE meta_key = '_my_important' AND meta_value = '1' AND post_id != ". $object->ID ." ORDER BY <code>wp_postmeta</code>.<code>post_id</code> DESC LIMIT 0,14" );
        $_object_id = array_map('intval', $_object_id);
        $test = array(285856,285856,285806,285806,285783,285790,285790,285783,285777,285777,285748,285748,285743); 
        $important = new WP_Query( array(
            'post__in' => $_object_id,
    //        'post__in' => $test,
              ) );
        ?>

    Допустим $object->ID равен 285811 делаю

    результат: var_dump($_object_id);

    array (size=14)
      0 => int 285864
      1 => int 285856
      2 => int 285834
      3 => int 285809
      4 => int 285806
      5 => int 285792
      6 => int 285791
      7 => int 285790
      8 => int 285783
      9 => int 285780
      10 => int 285777
      11 => int 285749
      12 => int 285748
      13 => int 285746

    Вроде бы всё хорошо, то что нужно, смотрим результат: var_dump($important);

    object(WP_Query)[12029]
      public 'query' => 
        array (size=1)
          'post__in' => 
            array (size=14)
              0 => int 285864
              1 => int 285856
              2 => int 285834
              3 => int 285809
              4 => int 285806
              5 => int 285792
              6 => int 285791
              7 => int 285790
              8 => int 285783
              9 => int 285780
              10 => int 285777
              11 => int 285749
              12 => int 285748
              13 => int 285746
      public 'query_vars' => 
        array (size=67)
          'post__in' => 
            array (size=14)
              0 => int 285856
              1 => int 285856
              2 => int 285811   //!!!!!!!!!! Откуда???? Если я передаю заранее написанный массив ID в $test, то проблем нет.
              3 => int 285806
              4 => int 285806
              5 => int 285783
              6 => int 285790
              7 => int 285790
              8 => int 285783
              9 => int 285777
              10 => int 285777
              11 => int 285748
              12 => int 285748
              13 => int 285743
          'error' => string '' (length=0)

    Откуда взялолось???? «2 => int 285811»

    public 'request' => string '
    					SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID
    					FROM wp_posts  LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
    					WHERE 1=1  AND wp_posts.ID IN (285856,285856,285811,285806,285806,285783,285790,285790,285783,285777,285777,285748,285748,285743) AND ( 
      wp_term_relationships.term_taxonomy_id IN (9)
    ) AND ((wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' 
    OR wp_posts.post_status = 'private')))
    					GROUP BY w

    ….
    Wordpress 6.1, сайт двуязычный, polylang и ACF
    Я уже даже попробовал заполнить новый массив, через цикл

          $arr = array();
          for ($i = 0; $i < 14; $i++) {
            $arr[] = $_object_id[$i];
             }

    , всё равно тот же результат

    • Тема изменена 3 года, 3 месяца назад пользователем Anonymous User 20734940.
    • Тема изменена 3 года, 3 месяца назад пользователем Anonymous User 20734940.
    • Тема изменена 3 года, 3 месяца назад пользователем Anonymous User 20734940.
    • Тема изменена 3 года, 3 месяца назад пользователем Anonymous User 20734940.
Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Автор Anonymous User 20734940

    (@anonymized-20734940)

    В общем даже если ручками я прописую ID 285864,285856,285834,285809,285806,285792,285791,285790,285783,285780,285777,285749,285748,285746, всё равно вылазит тот ID 285811. Значит они связаны со 2м языком. Буду думать

    • Ответ изменён 3 года, 3 месяца назад пользователем Anonymous User 20734940.

    я хочу, чтобы для текущей страницы, пользователю не отображалась эта же страница.

    медитативная фраза….
    ничего не понятно, но перечитывать можно сотню раз….

    Автор Anonymous User 20734940

    (@anonymized-20734940)

    Прошу прощения, не могу уже исправить пост. Имеется ввиду, не отображать в слайдере где меняются другие посты

    тут еще внезапно откуда то слайдер появился….
    какими еще подробностями порадуете?

Просмотр 4 ответов — с 1 по 4 (всего 4)

Тема «Wp_query с массивом post__in не верный результат» закрыта для новых ответов.