- 締切済み
WordPressでID番号以外でのページの識別法
WordPressを大学サークルのサイトのCMSとして使おうとしていているのですが、投稿ではない独立した「ページ」の識別をID番号以外で行うことは可能でしょうか。 投稿よりもページを主に使うので、出来る限りCSSで識別するHTMLタグの属性部分(id、class)を一定の形にテンプレート化したいのですが、ページを作成した時点ではそのページのIDは分からず、これまではthe_ID()で一度IDを表示させてからそのIDの数字を用いてCSSを設定していました。これでも不都合はないのですが、より理想的にはそのページの識別を任意の文字列で出来ればと思っています。具体的にはページ作成時に編集したパーマリンクの末尾の部分を用いれれば最適だと考えています。 そのようなタグや方法などがありましたら、教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
> 一応、phpで現在URLをディレクトリごとに(スラッシュで分割して)配列に挿入して、その最終要素を取得することで、意図したことはできました。 URLの表示形式を /%postname%/%year%/%monthnum%/%date%/ としたりして、最後に投稿日を置くこともできますので、APIを使って取得する方法をおすすめします。 ちゃんとそういうのがありますので。 > http://www.example.com/about/ このときの"about"(post_name、旧称slug(ページスラッグ))をとるには *ドキュメントのコピペですが。 <?php global $post; the_post(); // 必須。index.phpやsingle.phpではこのように書かれているThe_Loop開始のアレ。 // <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> $id=$post->ID; $this_post=get_post($id); ?> <div class="<?php echo $this_post->post_name; ?>"> class=about </div> post_nameの取り方は何種類かあるので、APIドキュメントを参考に使いやすい方法を採ってください。 post_nameは一意になっていますので、 <div id="<?php echo $this_post->post_name; ?>"> でも可能です。 同じpost_nameが指定されたときは、post_nameの後ろに連番がつくと思います。 cssファイルに .about {} や #about {} を追加してください。 <link href="xxx.php">でも可能といえば可能ですが、いろいろ面倒なので、 テーマエディタでcssファイルを編集するのがいいと思います。
- SAYKA
- ベストアンサー率34% (944/2776)
うーん そういう使い方かぁ そういう「ほんのちょっとの違い」をcssで統一っていうのは実はちょっとcssでは向いてないんだよね HTMLで埋め込むのが毎回違う値で面倒だからなんとか同じ書式で って言ってそれを実現できる方法としては、 phpでhtmlを書き出す時に専用のcssも吐き出す形じゃないかな。 つまりphpが埋め込む固有の部分に関するcssも書き出すというやつ。 通常は全ページ共通のcssで固有のstyleを書き足しているだろうけどそうじゃなくて共通は共通として固有は固有として取り込む形。 ファイルが増えるけど、そうじゃない場合はもう「JavaScript」しか選択肢が無くなるね。それは避けたいだろうけどファイルがhtmlと同じだけ増えるのとどっちが良いかって事じゃないかな。 今まで ・a.html 紹介とか ・b.html 活動とか ・common.css a.html も b.html も参照している この回答の案 ・a.html ・b.html ・common.css ・a.css aの固有部分のみについて書かれたcss ・b.css bの固有部分のみに(略 phpはいじれないのでcssだけでとか言われたら「無理」 cssは整形指示を書式化してあるだけで、複雑な条件によって変化させるには通常javascriptで行われる
- SAYKA
- ベストアンサー率34% (944/2776)
??? コンテンツマネージャなら「ページの形」はそれなりに「統一された表示様式」を持っているものなんじゃない? なのにページ毎の固有IDが必要って意味が今一つ見えてこないんだけど・・・? なんで各ページに固有IDが要るのかが判ると「じゃぁこうしたら?」というのが出る気がするんだけど・・・
補足
投稿ではない「ページ」は全てpage.phpが担っており、管理パネルで作れるコンテンツ部はそのpage.phpの中の一部であるので、それ以外のところはあらかじめpage.phpで作ったものになり、全ページの構造やデザインはほぼ等しくなります。ここで”ほぼ”と言うのは、管理パネルで作れる範囲外のところにも若干違いを出したいからです。 たとえば、ホームをhttp://example.com/として、「ページ」で「紹介」というページと「活動」というページを作り、それらの各ページのタイトルを管理パネルで作れる範囲外のところに画像で表示したいとします。そのときタイトルの画像を<img src="images/title_○○.gif" />のように一定にしたい場合、○○のところにIDが必要になるのです。加えて、スタイルなどもページごとに微妙に変えたいとすると、<div id="title_●●">のようにidやclassにもIDが必要になります。 ここで、タイトルの画像と管理パネルで作る部分がひと続きなら、いちいち管理パネルからタイトルの画像を挿入してもいいのですが、間にメニューバーなどが入ると、それができなくなります。 IDではなく、wp_title()でページのタイトルを取得することも考えましたが、日本語が入るのでだめで、そのため今までは数字のIDで○○を埋めていました。ただ、せっかくページのパーマリンクをhttp://example.com/about/(「紹介」の場合)と設定したのだから、どうにか"about"をそのページのIDとして利用できないかと考えているのです。そういうwordpressのタグなどがもしあったら教えていただけないかと思っています。
お礼
ありがとうございます。 一応、phpで現在URLをディレクトリごとに(スラッシュで分割して)配列に挿入して、その最終要素を取得することで、意図したことはできました。 ただ、やはりCSSを動的に生成するにはおっしゃる通りCSSの数を増やすか、HTMLの中に書かなければいけないと思うのですが、それは仕方ないかなあと感じました。