我在开发一个自定义 WordPress 主题时遇到了问题。虽然有点复杂,但本质上,我需要通过文章标题获取文章 ID。在伪代码中,最理想的情况应该是:
title = "foo";
post_id = get_post_id_where_title_is(title);
标题提到的是一个静态引用,不是从WordPress中获取的,它已经存在于页面上。
对于任何偶然看到这篇文章的人,简要说明一下:
get_page_by_title() 现在可以处理任何文章类型了。
在 WP 3.0 中添加了 $post_type
参数。
如果还有其他人遇到这个问题,我找到了解决方法。在经过四个小时的测试/搜索后,只是出于绝望才发布了这个问题!
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
status='published'
。 - random_user_name$my_post = get_page_by_title( 'My Title', OBJECT, 'post' );
echo $my_post->post_content;
( $page_title, $output, $post_type )
能够轻松地接收一个文章而不是一个页面。
通过创建函数,您可以避免重复编写代码,并更好地提高效率。
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);
您可以根据以下代码使用(参见[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 );
?>
1) 区分post_title和post_name。post_name可能是slug。post_title是文章的标题。
2)
$titlee = "yourtitle";
echo $id = $wpdb->get_var("SELECT ID FROM $GLOBALS['wpdb']->posts WHERE post_name = $titlee");
不需要使用任何类型的SQL查询或插件,可以使用WordPress标准函数来完成此操作。
$page = get_page_by_title( 'Home' );
$page_id = $page->ID;
使用 wp query 很容易从文章标题获取文章 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;
获取文章和页面ID的另一种方法是使用插件。
有一个插件,它的作用很简单,就是在所有页面、所有文章、所有分类表格中添加一个名为ID的列,并在下面列出所有页面/文章ID。
我认为这非常有用。
我经常使用这个插件,而且它非常轻量级。