Get post by page name or slug

时间:2011-04-22 作者:Zach Shallbetter

我知道这是非常前卫的,但请容忍我。我已经读到,一个人可以通过页面/帖子名称或slug查询页面。我之所以这样做,是因为我需要来自具有类似标题/段塞的页面的信息,并且无法获取页面id(除非有办法将标题转换为id)。

我尝试了多种变体,但都没有成功。这似乎是最合理的处理方式,但根本不起作用。

<?php 
    $args = array(
    \'pagename\' => \'CM-145\',
    \'post_type\' => \'page\',
    \'posts_per_page\' => 1,
    \'numberposts\' => 1
); ?>
<div>
    <?php
        query_posts( $args );
        get_template_part( \'loop\' );
        wp_reset_query();
    ?>
</div>
回路

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

                <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                    <?php if ( is_front_page() ) { ?>
                        <h2 class="entry-title"><?php the_title(); ?></h2>
                    <?php } else { ?>
                        <h1 class="entry-title"><?php the_title(); ?></h1>
                    <?php } ?>

                    <div class="entry-content">
                        <?php the_content(); ?>
                        <?php wp_link_pages( array( \'before\' => \'<div class="page-link">\' . __( \'Pages:\', \'twentyten\' ), \'after\' => \'</div>\' ) ); ?>
                        <?php edit_post_link( __( \'Edit\', \'twentyten\' ), \'<span class="edit-link">\', \'</span>\' ); ?>
                    </div><!-- .entry-content -->
                </div><!-- #post-## -->

                <?php comments_template( \'\', true ); ?>

<?php endwhile; // end of the loop. ?>
我也试过了\'name\' => \'CM-145\', 我不确定这是否是执行此操作的正确或合理方式。最后,我只需要简单地浏览一下页面并摘录一下,如果你有更好的想法,请随时告诉我。

提前谢谢。

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

你好@Zach Shallbetter:

如果我理解你的问题,那么当你真的需要更多地使用WordPress的API时,你正在寻找使用主题化函数来解决你的问题。可以将以下代码复制到test.php 使用文件和运行http://yoursite.com/test.php 让您看看它是如何工作的(假设您将http://yoursite.com 当然,您可以使用自己的网站域!)然后阅读评论,查看在站点中使用的代码的位置:

<?php 

// The function should go into your theme\'s functions.php file
function get_excerpt( $post_id ) {
  $post = get_post( $post_id );
  $excerpt = $post->post_excerpt;
  return ( post_password_required($post) ? false : 
     apply_filters( \'get_the_excerpt\', $excerpt ) );
}

include(\'../wp-load.php\');

// This code goes where you need to get and display the excerpt and thumbnail
$post = get_page_by_path(\'CM-145\');
$excerpt = get_excerpt($post->ID);
$thumbnail = get_the_post_thumbnail($post->ID);
?>
<div style="width:300px">
<span style="float:right;"><?php echo $thumbnail; ?></span>
<?php echo $excerpt ?>
</div>
此外,我有点担心您可能会经历一点“锤子和钉子”综合征;i、 e.当你有问题,而你只有一把锤子时,你会把问题当作钉子来对待,而你可能需要的是找到一把螺丝刀?

我特别担心的是,您使用的页面应该只是一个选项,或者至少是一个自定义帖子类型?您能否更深入地解释您的用例,以及您选择使用页面的原因?

SO网友:Milo

改变get_template_part( \'loop\' );get_template_part( \'loop\',\'page\' ); 或者直接在模板中手动插入一个循环,看看这是否是问题所在。您的代码在其他方面是正确的。

*编辑-我猜您的循环文件有一些条件检查,以确定如何在页面查询不满足的不同上下文中显示帖子,因此不会显示任何内容。

结束