Snažím se dostat obsah stránky, když vím jen ten slug řetězec.
Existuje pro to nějaká funkce, nebo snadný způsob, jak to udělat, nebo je to případ, kdy to děláte prostřednictvím SQL?
Díky moc
Použijte get_posts()
a parametr name
který je slug:
$page = get_posts( array( 'name' => 'your-slug' ) );
if ( $page )
{
echo $page[0]->post_content;
}
Mějte na paměti, že typ příspěvku v get_posts()
výchozí hodnoty 'post'
. Pokud chcete page use…
$page = get_posts(
array(
'name' => 'your-slug',
'post_type' => 'page'
)
);
Pokud chcete všechny typy public post (kromě příloh) nastavte argument typu příspěvku na 'any'
. Pak byste mohli získat více než jeden výsledek, protože slimáci nejsou jedineční napříč různými typy příspěvků.
Přečtěte si na podmíněné značky :is_page()
také vezme slug jako argument.
Proto,
if( is_page( 'your-slug' ) ) {
// fetch content
}
udělá, co chceš.
Pokud by vás zajímalo, jak načíst stránku/obsah stránky na základě slug, když ne na uvedené stránce, můžete také poslat get_posts
a slug. Toto není v kodexu zdokumentováno.
Následující ID přinese ID ze slug:
$args = array(
'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );
// echo fetched content
echo $posts_from_slug[0]->post_content;
Stránku můžete získat podle názvu pomocí get_page_by_title()
function.
Můžete ho použít takto (za předpokladu, že chcete zobrazit obsah):
$page = get_page_by_title('Your Title');
$content = apply_filters('the_content', $page->post_content);
echo $content;
BTW, pro získání stránky pomocí slug:
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'));
Použijte get_page_by_path
.
Syntaxe
<?php get_page_by_path( $page_path, $output, $post_type ); ?>
Příklad:
//Returns the animal with the slug 'cat'
get_page_by_path('cat', OBJECT, 'animal');
pro více referenci viz WordPress Function Reference
Tento kód používám při vyplňování šablony motivu ze stránky,
$about = get_page_by_path('about');
$content = apply_filters( 'the_content', $about->post_content );
echo $content;