Получение содержимого страницы с помощью slug
Я пытаюсь получить содержимое страницы, когда знаю только строку слага.
Есть ли для этого функция или простой способ сделать это, или это случай, когда это делается с помощью SQL?
Большое спасибо
4 answers
Использовать get_posts()
и параметр name
, который является слизняком:
$page = get_posts( array( 'name' => 'your-slug' ) );
if ( $page )
{
echo $page[0]->post_content;
}
Имейте в виду, что тип записи в get_posts()
по умолчанию равен 'post'
. Если вам нужна страница , используйте...
$page = get_posts(
array(
'name' => 'your-slug',
'post_type' => 'page'
)
);
Если вы хотите все общедоступные типы сообщений (кроме вложений), задайте для аргумента типа сообщения значение 'any'
. Тогда вы могли бы получить более одного результата, потому что слизни не уникальны для разных типов сообщений.
Вы можете получить страницу по ее названию, используя get_page_by_title()
функция.
Вы можете использовать его следующим образом (при условии, что вы хотите показать содержимое):
$page = get_page_by_title('Your Title');
$content = apply_filters('the_content', $page->post_content);
echo $content;
Кстати, чтобы получить страницу с помощью слизняка:
function get_page_id_by_slug($slug){
global $wpdb;
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = '".$slug."'AND post_type = 'page'");
return $id;
}
$page = get_post(get_page_id_by_slug('my-slug'));
Если на странице с рассматриваемой пулей
Ознакомьтесь с условными тегами:is_page()
также принимает пулю в качестве аргумента.
Следовательно,
if( is_page( 'your-slug' ) ) {
// fetch content
}
Будет делать то, что ты хочешь.
Если на другой странице
Если вас заинтересует, как получить контент поста/страницы на основе слизняка, когда нет на указанной странице, вы можете подать get_posts
и еще пуля. Это не задокументировано в кодексе.
Следующее приведет к идентификатор от пули:
$args = array(
'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );
// echo fetched content
echo $posts_from_slug[0]->post_content;
Используйте get_page_by_path
для извлечения объекта WP_Post, затем вы можете извлечь содержимое публикации и при необходимости отфильтровать вывод HTML.
Синтаксис
get_page_by_path( string $page_path, string $output = OBJECT, string|array $post_type = 'page' )
Пример:
Я использую этот код при заполнении шаблона темы со страницы, чтобы убедиться, что содержимое отображается в формате HTML:
<?php
$about = get_page_by_path('about');
$content = apply_filters( 'the_content', $about->post_content );
echo $content;
?>
Чтобы получить сообщение другого типа, введите два других параметра:
get_page_by_path('cat', OBJECT, 'animal');
Для получения дополнительной информации см. Функция WordPress Ссылка