Как я могу получить сообщение по названию в Wordpress?
Wordpress 3.0
Я хочу, чтобы содержимое определенного сообщения было на странице, используя title
сообщения. Насколько я могу судить, я не могу сделать это напрямую с помощью get_post()
.
Я могу предположить, что может быть грубой силой, но я подозреваю, что там более элегантный способ?
Ответы
Ответ 1
<!--1.Get post ID by post title if you know the title or the title variable-->
<?php
$posttitle = 'post_title';
$postid = $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE post_title = '" . $posttitle . "'" );
echo $postid;
?>
<!--2.use get_post($post_id) to get whatever you want to echo-->
<?php
$getpost= get_post($postid);
$postcontent= $getpost->post_content;
echo $postcontent;
?>
Ответ 2
get_page_by_title($id, OBJECT, 'post');
Там вы идете.
Ответ 3
Нет необходимости в SQL-запросе, если вы можете использовать собственные функции Wordpress для этого.
$page = get_page_by_title( 'Startsida' );
$page_id = $page->ID;
Ответ 4
post_exists - хорошая функция для этого:
https://developer.wordpress.org/reference/functions/post_exists/
<?php
$post_id = post_exists('Your title');
// return id or 0 if post doesn't exists.
if($post_id>0)
get_post($post_id);
Ответ 5
См. мой ответ по очень близкому вопросу. Не выполняйте не запрос базы данных с помощью строки без сохранения.
Ответ 6
Вы можете использовать это:
1)
global $wpdb;
$your_title = "yourtitle";
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = $your_title");
echo $id;
или 2)
$slug_to_get = 'my_title_or_slug';
// you can use custom post type too
$posttypee='post';
$args=array(
'title' => $slug_to_get,
'post_type' => $posttypee,
'post_status' => 'publish'
);
$my_posts = get_posts($args);
if( $my_posts ) {
echo 'ID on the first post found '.$my_posts[0]->ID;
}