ID for posts/blogs page

时间:2012-02-25 作者:nandac

我有一个网站,它有一个静态首页和一个博客页面,其中显示所有博客。

我正在使用自己的主题,并创建了一些自定义元框,这些元框根据$post->ID. 我得到的有趣行为是$post->ID 给我第一个博客的ID,而不是博客页面本身的ID。我在循环外使用$post,并已将其声明为全局,但没有任何效果。我还尝试使用$wp_query->post->ID 但这给了我最后一篇帖子的ID。

相关代码是我使用$post的地方,下面是这段代码位于页脚。php:

<?php require_once(\'wp-content/plugins/markdown.php\'); ?>
    <aside class="left-column">
        <?php
            global $post;
            $leftSidebar = get_post_meta( $post->ID, \'_my_meta\', true );
            // Convert markdown to HTML and then convert smilies
            if ( isset( $leftSidebar[\'leftContent\'] ) ) {
                echo convert_smilies( markdown( $leftSidebar[\'leftContent\'] ) );
            }
        ?>
    </aside>
用于循环的代码位于下面,并放置在索引中。php:

get_header(); ?>

<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <header>
            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
            <div class="post-date"><?php the_time(get_option( \'date_format\' )); ?></div>
        </header>
        <?php the_excerpt(); ?>
        <footer class="post-footer">
            <div class="categories">Posted in: <?php the_category(\', \'); ?></div>
            <div class="tags">Tags: <?php the_tags(); ?></div>
        </footer>
    </article>
   <?php endwhile; ?>
<?php else : ?>
    <article>
        <h3>Not Found</h3>
        <p>Sorry, but you are looking for something that is not available</p>
    </article>
<?php endif; ?>
如果需要进一步的信息,请告诉我。如果有一种方法可以通过编程找到博客页面的ID,并使博客页面识别自己是博客页面,而不是解决我问题的第一篇文章,我想。

提前谢谢。

2 个回复
最合适的回答,由SO网友:Michael 整理而成

考虑使用:

$postspage_id = get_option(\'page_for_posts\'); 
然后将代码中的预期行更改为:

$leftSidebar = get_post_meta( $postspage_id, \'_my_meta\', true ); 
发件人:http://www.blog.highub.com/cms/wordpress/wordpress-front-page-posts-page-id/

SO网友:Stephen Harris

如果您正在使用query_posts (这有一些缺点,因为它改变了主循环)Codex 说,

如果必须使用query\\u posts(),请确保在完成后调用wp\\u reset\\u query()。

(参见法典wp_reset_query())例如

// The Query
query_posts( $args ); //your $args

// The Loop
while ( have_posts() ) : the_post();
      //Display title, content here etc.
endwhile;

// Reset Query afterwards
wp_reset_query();
如果您不使用query_posts 您可能仍需要使用wp_reset_postdata() 哪一个

在循环执行单独的查询后,此函数将$post全局恢复为主查询中的当前post。

结束

相关推荐

似乎无法使set_blog_id工作,它只是不重置博客ID

我试图遍历一系列站点,但似乎无法使set\\u blog\\u id正常工作。以下是示例输出:数组([0]=>stdClass对象([blog\\u id]=>2)[1]=>stdClass对象([blog\\u id]=>3)[2]=>stdClass对象([blog\\u id]=>5))从数组中获取新的\\u blog\\u id并检查值-blog\\u id=2当前日志=5使用set\\u blog\\u id将当前blog\\u id设置为new\\u blo