ライ麦畑でつかまえられて、思わず出たオナラが案外フローラルだった感動を貴方にも。

スポンサーサイト

一定期間更新がないため広告を表示しています

2015.06.06 | - | - | - | pookmark

ページスラッグから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初心者なため、僕も苦労したのですが、ぜひ同じ
悩みを抱えてる人に見て頂けると幸いです。
 

スポンサーサイト

2015.06.06 | - | - | - | pookmark
comment
comment post





trackback URL
トラックバック機能は終了しました。
trackback

Powered by paperboy&co & JUGEM