запросить все публикации, сделанные определённым идентификатором пользователя

Вопрос или проблема

Я хочу получить все посты, опубликованные пользователем с ID.

Что-то не так с моим кодом, хотя это базовый цикл.

Пользователь с userid = 8 опубликовал два поста. По какой-то причине в результате я получаю только один пост.
В чем может быть причина?

Это мой запрос.

<?php 
    $args1 = array(
        'author' => 8,
        'post_type' => 'property',
    );

    $custom_query = new WP_Query( $args1 );


    if ($custom_query->have_posts()) :
        while($custom_query->have_posts()) : $custom_query->the_post();
    ?>
        <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
            <h2><a href="https://wordpress.stackexchange.com/questions/286175/<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <?php the_excerpt(); ?>
        </div>
    <?php
        endwhile;
    endif;
    wp_reset_postdata();
?>

Это вывод переменной $custom_query:

    object(WP_Query)#5055 (49) {
  ["query"]=>
  array(2) {
    ["author"]=>
    int(8)
    ["post_type"]=>
    string(8) "property"
  }
  ["query_vars"]=>
  array(64) {
    ["author"]=>
    string(1) "8"
    ["post_type"]=>
    string(8) "property"
    ["error"]=>
    string(0) ""
    ["m"]=>
    string(0) ""
    ["p"]=>
    int(0)
    ["post_parent"]=>
    string(0) ""
    ["subpost"]=>
    string(0) ""
    ["subpost_id"]=>
    string(0) ""
    ["attachment"]=>
    string(0) ""
    ["attachment_id"]=>
    int(0)
    ["name"]=>
    string(0) ""
    ["static"]=>
    string(0) ""
    ["pagename"]=>
    string(0) ""
    ["page_id"]=>
    int(0)
    ["second"]=>
    string(0) ""
    ["minute"]=>
    string(0) ""
    ["hour"]=>
    string(0) ""
    ["day"]=>
    int(0)
    ["monthnum"]=>
    int(0)
    ["year"]=>
    int(0)
    ["w"]=>
    int(0)
    ["category_name"]=>
    string(0) ""
    ["tag"]=>
    string(0) ""
    ["cat"]=>
    string(0) ""
    ["tag_id"]=>
    string(0) ""
    ["author_name"]=>
    string(0) ""
    ["feed"]=>
    string(0) ""
    ["tb"]=>
    string(0) ""
    ["paged"]=>
    int(0)
    ["meta_key"]=>
    string(0) ""
    ["meta_value"]=>
    string(0) ""
    ["preview"]=>
    string(0) ""
    ["s"]=>
    string(0) ""
    ["sentence"]=>
    string(0) ""
    ["title"]=>
    string(0) ""
    ["fields"]=>
    string(0) ""
    ["menu_order"]=>
    string(0) ""
    ["embed"]=>
    string(0) ""
    ["category__in"]=>
    array(0) {
    }
    ["category__not_in"]=>
    array(0) {
    }
    ["category__and"]=>
    array(0) {
    }
    ["post__in"]=>
    array(0) {
    }
    ["post__not_in"]=>
    array(0) {
    }
    ["post_name__in"]=>
    array(0) {
    }
    ["tag__in"]=>
    array(0) {
    }
    ["tag__not_in"]=>
    array(0) {
    }
    ["tag__and"]=>
    array(0) {
    }
    ["tag_slug__in"]=>
    array(0) {
    }
    ["tag_slug__and"]=>
    array(0) {
    }
    ["post_parent__in"]=>
    array(0) {
    }
    ["post_parent__not_in"]=>
    array(0) {
    }
    ["author__in"]=>
    array(1) {
      [0]=>
      int(8)
    }
    ["author__not_in"]=>
    array(0) {
    }
    ["ignore_sticky_posts"]=>
    bool(false)
    ["suppress_filters"]=>
    bool(false)
    ["cache_results"]=>
    bool(true)
    ["update_post_term_cache"]=>
    bool(true)
    ["lazy_load_term_meta"]=>
    bool(true)
    ["update_post_meta_cache"]=>
    bool(true)
    ["posts_per_page"]=>
    int(10)
    ["nopaging"]=>
    bool(false)
    ["comments_per_page"]=>
    string(2) "50"
    ["no_found_rows"]=>
    bool(false)
    ["order"]=>
    string(4) "DESC"
  }
  ["tax_query"]=>
  object(WP_Tax_Query)#5047 (6) {
    ["queries"]=>
    array(0) {
    }
    ["relation"]=>
    string(3) "AND"
    ["table_aliases":protected]>
    array(0) {
    }
    ["queried_terms"]=>
    array(0) {
    }
    ["primary_table"]=>
    string(8) "wp_posts"
    ["primary_id_column"]=>
    string(2) "ID"
  }
  ["meta_query"]=>
  object(WP_Meta_Query)#5048 (9) {
    ["queries"]=>
    array(0) {
    }
    ["relation"]=>
    NULL
    ["meta_table"]=>
    NULL
    ["meta_id_column"]=>
    NULL
    ["primary_table"]=>
    NULL
    ["primary_id_column"]=>
    NULL
    ["table_aliases":protected]>
    array(0) {
    }
    ["clauses":protected]>
    array(0) {
    }
    ["has_or_relation":protected]>
    bool(false)
  }
  ["date_query"]=>
  bool(false)
  ["request"]=>
  string(296) "SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_author IN (8)  AND wp_posts.post_type="property" AND (wp_posts.post_status="publish" OR wp_posts.post_status="acf-disabled" OR wp_posts.post_status="private")  ORDER BY wp_posts.post_date DESC LIMIT 0, 10"
  ["posts"]=>
  array(1) {
    [0]=>
    object(WP_Post)#5046 (24) {
      ["ID"]=>
      int(363)
      ["post_author"]=>
      string(1) "8"
      ["post_date"]=>
      string(19) "2017-10-16 10:11:28"
      ["post_date_gmt"]=>
      string(19) "2017-10-16 07:11:28"
      ["post_content"]=>
      string(0) ""
      ["post_title"]=>
      string(44) "תל אביב 4 חדרים דו משפחתי"
      ["post_excerpt"]=>
      string(0) ""
      ["post_status"]=>
      string(7) "publish"
      ["comment_status"]=>
      string(6) "closed"
      ["ping_status"]=>
      string(6) "closed"
      ["post_password"]=>
      string(0) ""
      ["post_name"]=>
      string(120) "%d7%aa%d7%9c-%d7%90%d7%91%d7%99%d7%91-4-%d7%ח%d7%93%d7%a8%d7%9d-%d7%93%d7%95-%d7%9e%d7%a9%d7%a4%d7%97%d7%aa%d7%99"
      ["to_ping"]=>
      string(0) ""
      ["pinged"]=>
      string(0) ""
      ["post_modified"]=>
      string(19) "2017-11-07 07:58:37"
      ["post_modified_gmt"]=>
      string(19) "2017-11-07 05:58:37"
      ["post_content_filtered"]=>
      string(0) ""
      ["post_parent"]=>
      int(0)
      ["guid"]=>
      string(57) "http://davdev.co.il/broker/?post_type=property&p=363"
      ["menu_order"]=>
      int(0)
      ["post_type"]=>
      string(8) "property"
      ["post_mime_type"]=>
      string(0) ""
      ["comment_count"]=>
      string(1) "0"
      ["filter"]=>
      string(3) "raw"
    }
  }
  ["post_count"]=>
  int(1)
  ["current_post"]=>
  int(-1)
  ["in_the_loop"]=>
  bool(false)
  ["post"]=>
  object(WP_Post)#5046 (24) {
    ["ID"]=>
    int(363)
    ["post_author"]=>
    string(1) "8"
    ["post_date"]=>
    string(19) "2017-10-16 10:11:28"
    ["post_date_gmt"]=>
    string(19) "2017-10-16 07:11:28"
    ["post_content"]=>
    string(0) ""
    ["post_title"]=>
    string(44) "תל אביב 4 חדרים דו משפחתי"
    ["post_excerpt"]=>
    string(0) ""
    ["post_status"]=>
    string(7) "publish"
    ["comment_status"]=>
    string(6) "closed"
    ["ping_status"]=>
    string(6) "closed"
    ["post_password"]=>
    string(0) ""
    ["post_name"]=>
    string(120) "%d7%aa%d7%9c-%d7%90%d7%91%d7%99%d7%91-4-%d7%ח%d7%ד%d7%a8%d7%9e-%d7%93%d7%ו-%d7%9e%d7%a9%d7%a4%d7%ח%d7%aa%d7%י"
    ["to_ping"]=>
    string(0) ""
    ["pinged"]=>
    string(0) ""
    ["post_modified"]=>
      string(19) "2017-11-07 07:58:37"
      ["post_modified_gmt"]=>
      string(19) "2017-11-07 05:58:37"
      ["post_content_filtered"]=>
      string(0) ""
      ["post_parent"]=>
      int(0)
      ["guid"]=>
      string(57) "http://davdev.co.il/broker/?post_type=property&p=363"
      ["menu_order"]=>
      int(0)
      ["post_type"]=>
      string(8) "property"
      ["post_mime_type"]=>
      string(0) ""
      ["comment_count"]=>
      string(1) "0"
      ["filter"]=>
      string(3) "raw"
  }
  ["comment_count"]=>
  int(0)
  ["current_comment"]=>
  int(-1)
  ["found_posts"]=>
  string(1) "1"
  ["max_num_pages"]=>
  float(1)
  ["max_num_comment_pages"]=>
  int(0)
  ["is_single"]=>
  bool(false)
  ["is_preview"]=>
  bool(false)
  ["is_page"]=>
  bool(false)
  ["is_archive"]=>
  bool(true)
  ["is_date"]=>
  bool(false)
  ["is_year"]=>
  bool(false)
  ["is_month"]=>
  bool(false)
  ["is_day"]=>
  bool(false)
  ["is_time"]=>
  bool(false)
  ["is_author"]=>
  bool(true)
  ["is_category"]=>
  bool(false)
  ["is_tag"]=>
  bool(false)
  ["is_tax"]=>
  bool(false)
  ["is_search"]=>
  bool(false)
  ["is_feed"]=>
  bool(false)
  ["is_comment_feed"]=>
  bool(false)
  ["is_trackback"]=>
  bool(false)
  ["is_home"]=>
  bool(false)
  ["is_404"]=>
  bool(false)
  ["is_embed"]=>
  bool(false)
  ["is_paged"]=>
  bool(false)
  ["is_admin"]=>
  bool(false)
  ["is_attachment"]=>
  bool(false)
  ["is_singular"]=>
  bool(false)
  ["is_robots"]=>
  bool(false)
  ["is_posts_page"]=>
  bool(false)
  ["is_post_type_archive"]=>
  bool(true)
  ["query_vars_hash":"WP_Query":private]>
  string(32) "8e707fefcd01a2398150df07917bd06c"
  ["query_vars_changed":"WP_Query":private]>
  bool(false)
  ["thumbnails_cached"]=>
  bool(false)
  ["stopwords":"WP_Query":private]>
  NULL
  ["compat_fields":"WP_Query":private]>
  array(2) {
    [0]=>
    string(15) "query_vars_hash"
    [1]=>
    string(18) "query_vars_changed"
  }
  ["compat_methods":"WP_Query":private]>
  array(2) {
    [0]=>
    string(16) "init_query_flags"
    [1]=>
    string(15) "parse_tax_query"
  }
}

Отсутствующий пост var_dump:

object(WP_Post)#5095 (24) { ["ID"]=> int(480) ["post_author"]=> string(1) "7" ["post_date"]=> string(19) "2017-11-17 11:35:30" ["post_date_gmt"]=> string(19) "2017-11-17 09:35:30" ["post_content"]=> string(0) "" ["post_title"]=> string(41) "בית בגדרה 3 חדרים קומה 1" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(6) "closed" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(109) "%d7%91%d7%99%d7%aa-%d7%91%d7%92%d7%93%d7%a8%d7%94-3-%d7%ח%d7%ד%d7%a8%d7%9d-%d7%ק%d7%9e%d7%94-1" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2017-11-17 11:36:05" ["post_modified_gmt"]=> string(19) "2017-11-17 09:36:05" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(54) "//127.0.0.1:3000/broker/?post_type=property&p=480" ["menu_order"]=> int(0) ["post_type"]=> string(8) "property" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" }

Вы запрашиваете пост автора с ID 8, и вы также указываете, чтобы тип поста совпадал с типом поста property, а статус поста был либо publish, либо acf-disabled, либо private.

Проверьте свой пост, который не был возвращен, и найдите
причину.

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND 

wp_posts.post_author IN (8)  AND
wp_posts.post_type="property" AND
(wp_posts.post_status="publish" OR
 wp_posts.post_status="acf-disabled" OR
 wp_posts.post_status="private"
)  
ORDER BY wp_posts.post_date DESC LIMIT 0, 10"

Ответ или решение

Вопрос о том, почему ваш код возвращает только один пост вместо ожидаемых двух, можно рассмотреть, проанализировав SQL-запрос, генерируемый вашим кодом. Вот полный анализ, который поможет вам выявить проблему и её решение.

1. Структура SQL-запроса

Ваш текущий SQL-запрос выглядит следующим образом:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID 
FROM wp_posts 
WHERE 1=1 
AND wp_posts.post_author IN (8) 
AND wp_posts.post_type="property" 
AND (
    wp_posts.post_status="publish" OR
    wp_posts.post_status="acf-disabled" OR
    wp_posts.post_status="private"
)  
ORDER BY wp_posts.post_date DESC 
LIMIT 0, 10

Анализ условий

  • author: фильтр по автору, какие посты принадлежат автору с ID = 8.
  • post_type: фильтр по типу поста — вы ищете только посты типа property.
  • post_status: фильтр по статусу поста. У вас определены три статуса: publish, acf-disabled, и private.

2. Проблема с отсутствующим постом

Из вашего вывода видно, что второй пост, который вы ожидаете, имеет post_author = 7. Это означает, что действительно существует пост, но он принадлежит другому автору. Проблема не в вашем запросе, а в данных.

3. Исправление проблемы

Если поста с ID = 480 нету в результате запроса по следующим причинам:

  • Пост принадлежит другому автору: Убедитесь, что этот пост был создан пользователем с ID = 8. Если это не так, он не будет возвращён вашим запросом.

  • Тип поста: Проверьте, что тип поста для второго ожидаемого поста действительно property. Если он имеет другой тип (например, post или custom_post_type), он исключается из результатов.

  • Статус поста: Убедитесь, что статус поста соответствует одному из указанных в вашем запросе. Если он, к примеру, имеет статус draft, он также не будет включён в результаты.

4. Рекомендации по исправлению кода

Измените ваш код, чтобы убедиться, что вы извлекаете только нужные посты с необходимыми условиями. Вот пример улучшенного кода:

<?php 
$args1 = array(
    'author' => 8,
    'post_type' => 'property',
    'post_status' => array('publish', 'acf-disabled', 'private'), // массив возможных статусов
    'posts_per_page' => -1 // для получения всех постов
);

$custom_query = new WP_Query($args1);

if ($custom_query->have_posts()) :
    while ($custom_query->have_posts()) : $custom_query->the_post();
?>
        <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <?php the_excerpt(); ?>
        </div>
<?php
    endwhile;
else:
    echo 'Посты не найдены.';
endif;

wp_reset_postdata();
?>

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...