Odpowiedzi:
Użyj get_posts()
i parametru, name
który jest ślimakiem:
$page = get_posts( array( 'name' => 'your-slug' ) );
if ( $page )
{
echo $page[0]->post_content;
}
Pamiętaj, że get_posts()
domyślnie typ wpisu to 'post'
. Jeśli chcesz stronę, użyj…
$page = get_posts(
array(
'name' => 'your-slug',
'post_type' => 'page'
)
);
Jeśli chcesz, aby wszystkie publiczne typy postów (oprócz załączników) ustaw argument typu posta na 'any'
. Wtedy możesz uzyskać więcej niż jeden wynik, ponieważ ślimaki nie są unikalne dla różnych typów postów.
Możesz uzyskać stronę według tytułu za pomocą get_page_by_title()
funkcji.
Możesz użyć tego w następujący sposób (zakładając, że chcesz wyświetlić treść):
$page = get_page_by_title('Your Title');
$content = apply_filters('the_content', $page->post_content);
echo $content;
BTW, aby uzyskać stronę za pomocą ślimaka:
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'));
Czytaj o tagach warunkowych : is_page()
bierze również ślimak jako argument.
W związku z tym,
if( is_page( 'your-slug' ) ) {
// fetch content
}
zrobi co chcesz.
Jeśli chcesz dowiedzieć się, jak pobrać treść postu / strony na podstawie informacji o ślimaku, gdy nie ma go na tej stronie, możesz również nakarmić get_posts
ślimaka. Nie jest to udokumentowane w kodeksie.
Następujący pobierze identyfikator z ślimaka:
$args = array(
'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );
// echo fetched content
echo $posts_from_slug[0]->post_content;
Zastosowanie get_page_by_path
.
Składnia
<?php get_page_by_path( $page_path, $output, $post_type ); ?>
Przykład:
//Returns the animal with the slug 'cat'
get_page_by_path('cat', OBJECT, 'animal');
więcej informacji znajdziesz w Opisie funkcji WordPress
Używam tego kodu, gdy zapełniam szablon kompozycji na stronie,
$about = get_page_by_path('about');
$content = apply_filters( 'the_content', $about->post_content );
echo $content;