Получить идентификатор сообщения WordPress из заголовка сообщения

42

У меня проблема с пользовательской темой WordPress, которую я разрабатываю. Это немного запутанно, но в сущности, мне нужно сделать, чтобы он получил сообщение "Заголовок сообщения". В псевдокоде в идеале было бы что-то вроде:

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

В названии упоминается статическая ссылка, которую не втягивает из WordPress, она уже присутствует на странице.

Спасибо заранее.

Теги:

9 ответов

78
Лучший ответ

Просто краткая заметка для всех, кто сталкивается с этим:
get_page_by_title() теперь может обрабатывать любой тип сообщения.
Параметр $post_type был добавлен в WP 3.0.

  • 18
    +1 всегда лучше использовать основную функцию, чем произвольный запрос mySQL.
  • 2
    Название функции сбивает с толку, хотя.
18

Нашел решение, если кто-то еще борется с этим. Только отправил вопрос из отчаяния после 4-часового тестирования /Googling!

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

  • 0
    Просто поместите эту функцию в ваш файл functions.php.
  • 2
    Обратите внимание, что вы можете изменить post_type на «page», если хотите получить идентификатор страницы. Вы также можете опустить post_type в предложении SQL where для поиска всех ревизий, страниц, постов и т. Д. (Все типы другими словами.)
Показать ещё 2 комментария
7

Как упоминал Михал Мау:

Использование

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

Это ( $page_title, $output, $post_type ), чтобы легко получить сообщение вместо страницы.

2

Пусть это поможет вам больше, создав функцию, чтобы вам не пришлось повторять код

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);
1

вы можете использовать следующий код в соответствии со [ссылкой] [http://codex.wordpress.org/Function_Reference/get_page_by_title] 1)

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

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");
  • 0
    Как это отвечает на вопрос?
0

легко получить идентификатор сообщения из заголовка сообщения, используя запрос wp:

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;
0

Не нужно использовать какие-либо SQL-запросы или плагины, используйте стандартные функции Wordpress для этого

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

Другой способ получить сообщение и идентификатор страницы - использовать плагин.

есть плагин, что он просто делает, просто добавьте столбец на все страницы, все сообщения, таблицы всех категорий и заголовок столбца ID... и справа внизу вы увидите все page/post, указанным в этой колонке.

Я думаю, что это должно быть очень полезно..

Я использую этот плагин очень часто, и он очень легкий.

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

  • 0
    Размещение кода было бы более полезным для нас, чтобы получить представление о том, что вы предлагаете ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню