Wordpress后> ID问题

时间:2011-04-26 18:41:14

标签: 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-&gt; ID的方式可能存在一些问题,但我不确定这里会发生什么。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

当您使用query_posts时,您必须致电global $post以获取post_meta。如果您只调用一个类别,为什么不使用存档模板?

此外,如果您要使用query_posts,请确保在之后重置查询,以便插件,侧边栏等仍然可以与条件等循环进行交互。

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

答案 1 :(得分:-1)

尝试使用内部页面中的_ID()替换$ post-&gt; 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>';