スポンサーサイト
一定期間更新がないため広告を表示しています
ページスラッグからIDを取得する:Wordpressメモ
Wordpressでは、表示させたくないページを指定するのに、
通常は、excludeの引数にpostID(数字)を入れて指定します。
しかし、postIDはデータベースの割り振りによって変わってしまうので、
出来あいのテンプレートなどを配布するとき、デフォルトで表示させない
ページをpostIDで指定することができません。
だからと言って、いちいちpostIDを入れてお客さんにexcludeさせるのは
荷が重いし、そもそもpostIDが素人には非常に見つけにくいですよね。
ならば、ページスラッグ(アルファベッドなど)で指定出来ればいいんですが、
デフォルトでは引数にページスラッグを指定できない・・・。
それを解決する方法をいくつか見つけたので、忘れないようにメモしておきます。
【方法1】ページスラッグからIDの取得について
上記では、get_page_by_pathという関数を使って
ページスラッグからpostIDを表示する方法が紹介されています。
あまり、知られていない関数ですが、IDだけでなく本文などもgetできます。
【方法2】ページスラッグからIDを取得する方法
上記では、postIDだけを取得する場合の簡単なオリジナル関数が紹介されています。
【応用編】
下記は、海外サイトを参考に、僕が実際に実装したソースです。
wp_list_pagesという、ページのリストを取得する一番オーソドックスな
関数を使用する際、postIDではなく、ページスラッグで除外したい
ページを指定する方法です。
まず、function.phpに下記を加えます。
-----
<?php
function get_ids_from_slugs($slugs){
$slugs = preg_split("/,¥s?/", $slugs);
$ids = array();
foreach($slugs as $page_slug){
$page = get_page_by_path($page_slug);
array_push($ids, $page->ID);
}
return implode(",", $ids);
}
?>
-----
次に、wp_list_pagesを使いたい箇所に下記を加えます。
<?php wp_list_pages(array('title_li' =>'','sort_column'=>'menu_order', 'exclude' => get_ids_from_slugs('hoge1,hoge2,hoge3'))); ?>
上記のhoge1,hoge2,hoge3の部分が除外したいページの
ページスラッグになっています。
以上になります。
php初心者なため、僕も苦労したのですが、ぜひ同じ
悩みを抱えてる人に見て頂けると幸いです。
スポンサーサイト
Powered by paperboy&co & JUGEM