【问题标题】:Display specific post on a Wordpress page在 Wordpress 页面上显示特定帖子
【发布时间】:2013-02-24 14:42:10
【问题描述】:

我试图让特定的帖子显示在 single.php 页面中,但是由于某种原因,我显示了所有帖子。我不确定我是否正确获取了帖子 ID,但这是我目前的做法:

    <?php
    $post_id = (int) $_GET['p'];
    query_posts('p=' . $post_id);
    while(have_posts()) 
    { 
        $this_page = the_post();
        echo the_content();
    } 
    ?>

它应该只显示一个存储在 $post_id 变量中的 id 的帖子,但由于某种原因它会获取所有这些 ;/

【问题讨论】:

  • 是和否 - 你在哪里设置 $id 变量?如果您想要 ID 为 11 的帖子,您可以使用 get_permalink( 11 );codex.wordpress.org/Function_Reference/…
  • 是的,问题是该 url 中可能有任何 id 不只是 11,我需要一种方法来获取该 ID,而不是在查询中回显它,这样我就可以得到一个包含任何内容的帖子id 在 url 中。
  • @McNab 我现在更改了问题以准确显示我正在尝试做什么(使用 GET 方法)所以我现在不使用永久链接,但由于某种原因它仍然无法正常工作;/

标签: php wordpress post wordpress-theming


【解决方案1】:

不确定这是否是您要查找的内容,但我了解您希望在 single.php 上显示特定页面

为什么不使用这个:

<?php 
  $page_id = get_ID_by_slug('my_page_slug');
  $page_data = get_page( $page_id );
?> 

<h2><?php echo $page_data->post_title; ?></h2>
<p><?php echo $page_data->post_content; ?></p>    

并将其添加到您的 functions.php

/* 通过 slug 获取页面 */

function get_ID_by_slug($page_slug) {
  $page = get_page_by_path($page_slug);
  if ($page) {
    return $page->ID;
  } else {
    return null;
  }
}

【讨论】:

    【解决方案2】:

    您是否尝试过从 URL 中获取帖子 ID?

    <?php
       $post_id = (int) $_GET['p'];
       query_posts('p=' . $post_id);
    ?>
    

    或者,这也可能有效:

    <?php get_post($post_id); ?>
    

    【讨论】:

    • 这太奇怪了,尽管这样做了,我仍然收到所有帖子,我认为它应该可以工作;/我更新了对新查询的答案
    • @IlyaKnaup 您尝试加载此帖子的页面 - 它是自定义模板页面吗?如果是这样,您能否将 GET 参数更改为不同的值(即?postId=11)。或者这是现有的 Wordpress 帖子页面?
    • @IlyaKnaup 另外,如果您尝试使用get_post($post_id) 而不是query_posts,会发生什么?
    • 这是一个 single.php 页面,根据我的教程系列,这是 Wordpress 用来显示帖子的页面。它使用 ?p=... 作为帖子 ID
    【解决方案3】:

    丑陋的方式:

    query_posts('p=11');
    

    query_posts 改变主查询)

    不那么丑的方式:

    $my_query = new WP_Query('p=11');
    while($my_query->have_posts()){
      $my_query->the_post();
      the_content();
    }
    

    【讨论】:

    • 是的,问题是该 url 中可能有任何 id 不只是 11,我需要一种方法来获取该 ID,而不是在查询中回显它,这样我就可以得到一个包含任何内容的帖子id 在 url 中。
    • 我这样做并更新了我的问题以使用新代码,但由于某种原因,我仍然收到所有帖子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2016-04-10
    相关资源
    最近更新 更多