jeff
  • 0
Учитель

Невозможно использовать get_page_by_title() более одного раза на странице?

  • 0

В один из моих шаблонов страниц мне нужно включить содержимое нескольких других страниц. Например, если мой шаблон страницы называется «Фрукты», мне нужно извлечь содержимое страницы со страниц с именами «Яблоко», «Груша», «Апельсин», «Лайм» и т. д. Это дает моему пользователю возможность редактировать «Яблоко» и «Лайм» по отдельности из области администрирования.

Я пытаюсь использовать get_page_by_title() для извлечения этих подстраниц, но эта функция, кажется, хочет работать только один раз на странице. Первый раз я звоню

get_page_by_title('Apple')

работает отлично. Когда я позже позвоню

get_page_by_title('Lime')

он снова отображает Apple. Эта функция ограничена одним разом на странице или я делаю что-то не так?

Редактировать: кажется, что независимо от того, какой заголовок я передаю в get_page_by_title(), он всегда будет получать содержимое текущей страницы. Итак, если я нахожусь на example.com/fruit и звоню

get_page_by_title('Apples')

на странице всегда будет отображаться контент из Fruit. Не яблоки.

Share
  1. get_page_by_title возвращает идентификатор, а не содержимое. вот пример того, что я использую для получения контента с определенного идентификатора страницы.

    вызвать функцию

    $page_id = get_page_by_title('title');
    $excerpt =  get_excerpt_by_id($page_id);
    

    в functions.php

    function get_excerpt_by_id($post_id) {
       global $wpdb;
       $query = "SELECT post_content FROM $wpdb->posts WHERE ID = $post_id LIMIT 1";
       $result = $wpdb->get_results($query, ARRAY_A);
       return $result[0]['post_content'];
    }
    
    • 0
  2. Для любого, кто находит это, «правильный» ответ делает ненужным SQL-запрос.

    Подумайте о том, чтобы сделать:

    $page = get_page_by_title('title', OBJECT);
    echo $page->post_excerpt;
    // Wanna get other values? Check them:
    // var_dump($page);
    // If you need meta values:
    //$val = get_post_meta($page->ID, 'key_of_what_u_want', true);
    
    • 0

Оставить ответ

You must login to add an answer.