【问题标题】:Get WordPress Post ID from Post title从帖子标题获取 WordPress 帖子 ID
【发布时间】:2010-12-04 22:24:46
【问题描述】:

我正在开发的自定义 WordPress 主题存在问题。这有点令人费解,但本质上,我需要做的是通过它的帖子标题获取一个帖子 ID。在伪代码中,理想情况下是这样的:

title = "foo";
post_id = get_post_id_where_title_is(title);

提到的标题是一个静态引用,不是从 WordPress 中提取的,它已经存在于页面上。

提前致谢。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    如果其他人对此感到困惑,请找到解决方案。经过 4 小时的测试/谷歌搜索后,才在绝望中发布了这个问题!

    function get_post_by_title($page_title, $output = OBJECT) {
        global $wpdb;
            $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='post'", $page_title ));
            if ( $post )
                return get_post($post, $output);
    
        return null;
    }
    

    发现于:http://sudarmuthu.com/blog/2009/09/18/retrieving-posts-and-pages-based-on-title-in-wordpress.html

    【讨论】:

    • 只需将该函数放在您的functions.php文件中即可。
    • 请注意,如果您想获取页面的 id,您可能希望将 post_type 更改为 'page'。您也可以省略 SQL where 子句中的 post_type 来搜索所有修订版、页面和帖子等。(即所有类型。)
    • 我怀疑这可能会返回草稿/垃圾版本,因为它没有标准 status='published'....
    【解决方案2】:

    对于任何偶然发现此问题的人来说,只是一个简短的提示:
    get_page_by_title() 现在可以处理任何帖子类型。
    WP 3.0 中添加了$post_type 参数。

    【讨论】:

    • +1 总是比使用一些任意的 mySQL 查询更好。
    • 函数名有点混乱。
    【解决方案3】:

    获取帖子和页面 ID 的另一种方法是使用插件..

    有一个插件,它所做的只是在所有页面、所有帖子、所有类别表中添加一个列,并有一个 ID 列标题...在下方,您将看到所有该列中列出的页面/帖子 ID..

    我觉得应该很有用..

    我经常使用这个插件,而且非常轻量级。

    http://getyourblogready.com/?p=758

    【讨论】:

    • 发布代码对我们了解您的提议更有用...
    【解决方案4】:

    无需使用任何类型的 SQL 查询或插件,为此使用 Wordpress 标准函数

    $page = get_page_by_title( 'Home' );
    $page_id = $page->ID;
    

    【讨论】:

      【解决方案5】:

      您可以按照 [a link][http://codex.wordpress.org/Function_Reference/get_page_by_title]1 使用以下代码!

      <?php 
      $page = get_page_by_title( 'About' );
      wp_list_pages( 'exclude=' . $page->ID );
      ?>
      

      【讨论】:

        【解决方案6】:

        使用 wp 查询很容易从帖子标题中获取帖子 ID:

        global $wpdb;
        
        $rw = $wpdb->get_row( $wpdb->prepare("select * from "your post table name" where post_title='your variable name or your post title'"));
        
        echo $rw->ID;
        

        【讨论】:

          【解决方案7】:

          1) post_title 和 post_name 彼此不同。 post_name 也许是蛞蝓。 post_title 是文章的标题。

          2)

          $titlee = "yourtitle";
          echo $id = $wpdb->get_var("SELECT ID FROM $GLOBALS['wpdb']->posts WHERE post_name = $titlee");
          

          【讨论】:

          • 这如何回答这个问题?
          【解决方案8】:

          就像 Michal Mau 提到的:

          使用

          $my_post = get_page_by_title( 'My Title', OBJECT, 'post' );
          echo $my_post->post_content;
          

          ( $page_title, $output, $post_type ) 可以轻松接收帖子而不是页面。

          【讨论】:

            【解决方案9】:

            希望这将通过创建函数为您提供更多帮助,以便您无需重复代码

            function get_page_id_by_title($title)
            {
            $page = get_page_by_title($title);
            return $page->ID;
            }
            
            $title = "your title";
            get_page_id_by_title($title);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-06-21
              • 2017-04-23
              • 2017-07-15
              • 1970-01-01
              • 1970-01-01
              • 2015-12-27
              • 1970-01-01
              相关资源
              最近更新 更多