1 Востаннє редагувалося Faraon (27.09.2017 09:14:44)

Тема: Отримати пости які передують по переданому id get_posts() WordPress

Привіт. Як у WordPress отримати пости які були опубліковані скорше ніж пост з id * ?

    $args = array(
        'numberposts' => 1,
        'orderby'     => 'id',
        'order'       => 'DESC',
        'post_type'   => 'post'
    );
    $posts = get_posts( $args );

Так я отримую один останній пост, я ще хочу дописати умову щоб отримати один останній пост який опублікований скорше за пост з id наприклад 1000? Не можу знайти як саме потрібно передати таку умову.
Думав так:

    $args = array(
        'numberposts' => 1,
        'orderby'     => 'id',
        'order'       => 'DESC',
        'post_type'   => 'post',
        'meta_query' => array ( 
            array( 
                    'key' => 'ID', 
                    'value' => (int)($_POST['loadMorePost']), 
                    'compare' => '<', 
            ), 
    ),
    );

не спрацювало, напевне через те що meta_query застосовується тільки для мета полів...
Поможіть будь ласка)

2 Востаннє редагувалося Betterthanyou (27.09.2017 10:07:33)

Re: Отримати пости які передують по переданому id get_posts() WordPress

Faraon написав:

я ще хочу дописати умову щоб отримати один останній пост який опублікований скорше за пост з id наприклад 1000?

Що означає скоріше ? Тобто попередній пост відносно поточного. Якщо це 1000 пост, то отримати 999, чи ні ?

3

Re: Отримати пости які передують по переданому id get_posts() WordPress

Може, вам get_adjacent_post треба?

Подякували: Faraon, leofun012

4 Востаннє редагувалося Faraon (27.09.2017 10:30:17)

Re: Отримати пости які передують по переданому id get_posts() WordPress

Betterthanyou написав:
Faraon написав:

я ще хочу дописати умову щоб отримати один останній пост який опублікований скорше за пост з id наприклад 1000?

Що означає скоріше ? Тобто попередній пост відносно поточного. Якщо це 1000 пост, то отримати 999, чи ні ?

так, id поточного поста ми отримуємо post запитом

<?php
if(isset($_POST['loadMorePost']) && is_int((int)($_POST['loadMorePost'])))
{
    require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

    $args = array(
        'numberposts' => 1,
        'orderby'     => 'id',
        'order'       => 'DESC',
        'post_type'   => 'post'
    );
    
    $custom_posts = get_posts( $args );
    foreach($custom_posts as $post) : setup_postdata($post);
         ?>
         


<div id="content" class="content" role="main">
    <?php 
    get_template_part( 'contentLoop', get_post_format() );
    ?>
<div>

<?php wp_reset_postdata(); // reset the query  
endforeach;
}

5

Re: Отримати пости які передують по переданому id get_posts() WordPress

koala написав:

Може, вам get_adjacent_post треба?

ні(

6 Востаннє редагувалося Betterthanyou (27.09.2017 10:33:07)

Re: Отримати пости які передують по переданому id get_posts() WordPress

Спробуйте так

<?php
$prev_post = get_previous_post();
if (!empty( $prev_post )): ?>
  <a href="<?php echo $prev_post->guid ?>"><?php echo $prev_post->post_title ?></a>
<?php echo $prev_post->the_content(); ?>
<?php endif ?>

https://codex.wordpress.org/Function_Re … vious_post

7

Re: Отримати пости які передують по переданому id get_posts() WordPress

Betterthanyou написав:

Спробуйте так

<?php
$prev_post = get_previous_post();
if (!empty( $prev_post )): ?>
  <a href="<?php echo $prev_post->guid ?>"><?php echo $prev_post->post_title ?></a>
<?php echo $prev_post->the_content(); ?>
<?php endif ?>

https://codex.wordpress.org/Function_Re … vious_post

не працює. Справа в тому що на сторінці на якій я хочу отримати попередній пост відносно поточного немає цього самого поточного, а тільки його id що міститься в змінній $_POST['loadMorePost'].

8 Востаннє редагувалося Faraon (27.09.2017 14:09:13)

Re: Отримати пости які передують по переданому id get_posts() WordPress

Проблему вирішив трішки по іншому. Я вирішив передати не id, а дату. І вибрати пост який передує по даті публікації

    $args = array(
        'numberposts' => 1,
        'orderby'     => 'date',
        'order'       => 'DESC',
        'post_type'   => 'post',
        'date_query' => array(
            'before' => $getPost->post_date_gmt
        )
    );
    

    $custom_posts = get_posts( $args );