Сообщение WordPress-> Проблема с идентификатором

#php #wordpress

#php #wordpress

Вопрос:

Это вопрос WordPress. Я пытаюсь использовать немного кода, который отлично работает на моей домашней странице, в шаблонах моей внутренней страницы:

 query_posts('cat=4');
    // The Loop
    echo '<div id="cal_details"><ul>';
    while ( have_posts() ) : the_post();
        $cal_date_j = date('j', intval(get_post_meta($post->ID, 'date_value', true)));
        $cal_date_n = date('n', intval(get_post_meta($post->ID, 'date_value', true)));
            $my_array[] = date('j, n', intval(get_post_meta($post->ID, 'date_value', true)));


            $issetdate = get_post_meta($post->ID, 'date_value', true);

            if (isset($issetdate)) {
            echo '<li class="cal_event_li list_item_' . $cal_date_j . '_' . $cal_date_n . '">';
            echo '<a href="' . get_permalink() . '">';
            the_title();                        
                echo '</a></li>';
            }
    endwhile;
    echo '</ul></div>';
  

Однако, похоже, это не работает на внутренних страницах. Все ссылки на заголовки выводятся правильно, но часть get_post_meta будет напечатана неправильно.

Все элементы списка отображают что-то вроде <li class="cal_event_li list_item_1_1">

Я думаю, что, возможно, есть какая-то проблема с тем, как я пытался использовать $ post-> ID, но я не уверен, что здесь происходит. Есть идеи?

Ответ №1:

При использовании query_posts вы должны вызвать global $post , чтобы получить post_meta. Если вы вызываете только одну категорию, почему бы вам просто не использовать шаблон архива?

Также, если вы собираетесь использовать query_posts , убедитесь, что вы сбросили послесловия к запросу, чтобы плагины, боковые панели и т.д. Все еще Могли Взаимодействовать с циклом для условных выражений и т.д..

 global %post;
query_posts('cat=4');
    // The Loop
    //more stuff
endwhile;
wp_reset_query();
  

Комментарии:

1. Код предназначен для плагина, который загружает даты в календарь на боковой панели, вот почему я не могу использовать страницу архивирования.

Ответ №2:

попробуйте заменить $post-> ID на the_ID() на внутренних страницах. что-то вроде этого

 query_posts('cat=4');
// The Loop
echo '<div id="cal_details"><ul>';
while ( have_posts() ) : the_post();
    $cal_date_j = date('j', intval(get_post_meta(the_ID(), 'date_value', true)));
    $cal_date_n = date('n', intval(get_post_meta(the_ID(), 'date_value', true)));
        $my_array[] = date('j, n', intval(get_post_meta(the_ID(), 'date_value', true)));


        $issetdate = get_post_meta(the_id(), 'date_value', true);

        if (isset($issetdate)) {
        echo '<li class="cal_event_li list_item_' . $cal_date_j . '_' . $cal_date_n . '">';
        echo '<a href="' . get_permalink() . '">';
        the_title();                        
            echo '</a></li>';
        }
endwhile;
echo '</ul></div>';