Ответы:
Используйте 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
.
Синтаксис
<?php get_page_by_path( $page_path, $output, $post_type ); ?>
Пример:
//Returns the animal with the slug 'cat'
get_page_by_path('cat', OBJECT, 'animal');
для получения дополнительной ссылки см. Справочник по функциям WordPress.
Я использую этот код при заполнении шаблона темы со страницы,
$about = get_page_by_path('about');
$content = apply_filters( 'the_content', $about->post_content );
echo $content;