Получение заголовка, URL и отрывка страницы

31 июл. 2012 г., 13:35:10
Просмотры: 27.5K
Голосов: 2

У меня следующая настройка: главная страница настроена как 'статическая' и использует шаблон страницы темы. В этом шаблоне / на главной странице мне нужно получить заголовок страницы, URL и отрывок со страницы "О нас".

Я нашел этот код, который делает именно то, что мне нужно, но интересует, есть ли другой подход, который бы использовал не ID страницы, а slug или заголовок.

<?php
    $page_id = 13;
    $page_data = get_page( $page_id );
    $the_excerpt = $page_data->post_excerpt;
    $title = $page_data->post_title;
?>
<a href="<?php echo get_permalink(13); ?>">
    <?php echo $page_data->post_title; ?>
</a>

Более позднее дополнение: На основе ответа от peteroak, вот полный рабочий код:

<?php
    $page = get_page_by_title( 'About' );
    $the_excerpt = $page->post_excerpt;
    $page_data = get_page( $page );
    $title = $page_data->post_title;
?>
<header class="entry-header">
    <h1 class="entry-title">
        <a href="<?php echo esc_url( get_permalink( get_page_by_title( 'About' ) ) ); ?>">
            <?php echo $page_data->post_title; ?>
        </a>
    </h1>
</header>   
    <div class="entry-content"><?php echo $page->post_excerpt; ?>
        <a href="<?php echo esc_url( get_permalink( get_page_by_title( 'About' ) ) ); ?>">подробнее +</a>
    </div>
1
Комментарии

Привет, нашел этот трендовый код, приведенный выше - это то, что я искал, но я не понимаю, почему '<?php echo $page->post_excerpt; ?>' не работает!! Можешь сказать, что я упустил? Спасибо заранее!

jhunlio jhunlio
12 июл. 2013 г. 11:47:13
Все ответы на вопрос 2
3

В Codex есть именно то, что вам нужно: get_page_by_title()

Пример

 $page = get_page_by_title( 'О компании' );
 $the_excerpt = $page->post_excerpt;

или

 $page = get_page_by_path( 'родительская-страница/дочерняя-страница' );
31 июл. 2012 г. 13:44:30
Комментарии

Я не знал, что такая функция существует. Я написал похожую функцию некоторое время назад. Думаю, теперь она мне не понадобится :)

Sisir Sisir
31 июл. 2012 г. 14:31:01

Спасибо за помощь! Я обновлю свой пост полным кодом, который решает проблему.

George Grigorita George Grigorita
31 июл. 2012 г. 15:37:46

рад, что смог помочь :)

pcarvalho pcarvalho
31 июл. 2012 г. 16:04:52
2

Используйте публичное API везде

Внутри цикла вы можете использовать get_the_excerpt() (без аргументов). Это лучше, чем $post/$page->excerpt, так как оно также применяет фильтры и проверяет, есть ли у страницы/записи пароль.

31 июл. 2012 г. 13:51:41
Комментарии

Я не использовал цикл для этого, будет ли реальная разница в производительности, если я использую цикл в этом коде или нет?

George Grigorita George Grigorita
31 июл. 2012 г. 15:44:04

В этом случае вам придется воссоздавать всю внутреннюю логику функций - см. ссылку в ответе ↑ выше.

kaiser kaiser
31 июл. 2012 г. 15:46:12