Получить все сообщения за тот же месяц и год для отображения боковой панели - PullRequest
0 голосов
/ 19 августа 2010

Блог Wordpress, который я создаю, публикуется как журнал;в первый день каждого месяца несколько (девять, если быть точным) сообщений публикуются в быстрой последовательности.Когда читатель просматривает одно из этих девяти сообщений, остальные 8 сообщений должны появиться на боковой панели.

У меня есть функция, которую я написал для этого, но у меня есть некоторые проблемы, которые я опишу ниже.Вот код:

function getSidebarPosts($post_id){
    $ret = array();
    $parent = get_post($post_id, ARRAY_A);
    $sdate = strtotime($parent['post_date']);
    $month = date('m',$sdate);
    $year = date('Y',$sdate);

    $sargs = array(
        'monthnum'=>$month,
        'year'=>$year,
        'numberposts'=>9
    );
    $sposts = get_posts($sargs);
    foreach($sposts as $p){
        setup_postdata($p);
        $id = get_the_ID();
        if($id == $post_id){ continue; }
        $link = get_permalink($id);
        $title = get_the_title();
        $cats = wp_get_post_categories($id);
        $cat = get_category($cats[0]);
        $o = '<li><span>'.$cat->name.'</span> ';
        $o .= '<a href="'.$link.'">'.$title.'</a></li>';
        $ret[] = $o;
    }
    return $ret;
}

Параметр, переданный этой функции, является идентификатором отображаемой записи, поэтому мне нужно получить все остальные публикации, опубликованные в тот же месяц и год, что и просматриваемая запись.,Wordpress не генерирует никаких ошибок ни в одном из этих случаев (равно как и в PHP), но я просто получаю пустой набор результатов, и я не уверен, почему это так.Код довольно прост, но если я могу что-то прояснить, прокомментируйте и дайте мне знать.

О, и я попытался отрегулировать параметр 'numberposts', и, похоже, это неэффект.Кроме того, каждый пост имеет ровно одну категорию.

Спасибо!

1 Ответ

0 голосов
/ 19 августа 2010

Я бы взглянул на результаты, прежде чем двигаться дальше:

$parent = get_post($post_id, ARRAY_A);
$sdate = strtotime($parent['post_date']);

Возможно, вы можете сделать что-то подобное для тестирования:

function getSidebarPosts($post_id){
    $ret = array();
    $parent = get_post($post_id, ARRAY_A);
    $sdate = strtotime($parent['post_date']);
    $month = date('m',$sdate);
    $year = date('Y',$sdate);

    $ret[] = '<h3>Parent post:</h3>';
    $ret[] = print_r($parent, true);
    $ret[] = '<h3>Post date:</h3>';
    $ret[] = $parent['post_date'];
    $ret[] = '<h3>Post time:</h3>';
    $ret[] = $sdate;
    $ret[] = '<h3>Post converted date:</h3>';
    $ret[] = date('Y-m-d g:i:s a', $sdate);

    return $ret;
}

Пожалуйста, сообщите результат:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...