Slugを使ってページコンテンツを取得する
スラッグ文字列しかわからないときにページコンテンツを取得しようとしています。
これのための機能、またはこれをする簡単な方法がありますか、またはこれはSQLによってそれをすることのケースですか?
どうもありがとう
get_posts()
とスラッグであるパラメータname
を使用します。
$page = get_posts( array( 'name' => 'your-slug' ) );
if ( $page )
{
echo $page[0]->post_content;
}
get_posts()
の投稿タイプのデフォルトは'post'
です。 page が欲しいなら…
$page = get_posts(
array(
'name' => 'your-slug',
'post_type' => 'page'
)
);
all publicの投稿タイプ(添付ファイルを除く)が必要な場合は、投稿タイプの引数を'any'
に設定します。ナメクジはさまざまな投稿タイプで一意ではないため、複数の結果が得られる可能性があります。
問題のスラグがあるページに
条件付きタグ :について読んでください。is_page()
もスラッグを引数として取ります。
だから、
if( is_page( 'your-slug' ) ) {
// fetch content
}
あなたが望むことをするでしょう。
別のページに
そのページでnotの時にスラッグに基づいて投稿/ページのコンテンツを取得する方法に興味があるなら、 get_posts
スラッグを供給することもできます。これはコーデックスには文書化されていません。
以下は、スラッグからIDを取得します。
$args = array(
'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );
// echo fetched content
echo $posts_from_slug[0]->post_content;
get_page_by_title()
functionを使ってページのタイトルを取得することができます。
あなたはこれを使うことができます(あなたが内容を見せたいと仮定して):
$page = get_page_by_title('Your Title');
$content = apply_filters('the_content', $page->post_content);
echo $content;
ところで、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'));
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;