• 締切済み

WordPressでID番号以外でのページの識別法

WordPressを大学サークルのサイトのCMSとして使おうとしていているのですが、投稿ではない独立した「ページ」の識別をID番号以外で行うことは可能でしょうか。 投稿よりもページを主に使うので、出来る限りCSSで識別するHTMLタグの属性部分(id、class)を一定の形にテンプレート化したいのですが、ページを作成した時点ではそのページのIDは分からず、これまではthe_ID()で一度IDを表示させてからそのIDの数字を用いてCSSを設定していました。これでも不都合はないのですが、より理想的にはそのページの識別を任意の文字列で出来ればと思っています。具体的にはページ作成時に編集したパーマリンクの末尾の部分を用いれれば最適だと考えています。 そのようなタグや方法などがありましたら、教えてください。

  • PHP
  • 回答数3
  • ありがとう数2

みんなの回答

回答No.3

> 一応、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ファイルを編集するのがいいと思います。

参考URL:
http://codex.wordpress.org/Function_Reference/get_post
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

うーん そういう使い方かぁ そういう「ほんのちょっとの違い」を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で行われる

twinhourse
質問者

お礼

ありがとうございます。 一応、phpで現在URLをディレクトリごとに(スラッシュで分割して)配列に挿入して、その最終要素を取得することで、意図したことはできました。 ただ、やはりCSSを動的に生成するにはおっしゃる通りCSSの数を増やすか、HTMLの中に書かなければいけないと思うのですが、それは仕方ないかなあと感じました。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

??? コンテンツマネージャなら「ページの形」はそれなりに「統一された表示様式」を持っているものなんじゃない? なのにページ毎の固有IDが必要って意味が今一つ見えてこないんだけど・・・? なんで各ページに固有IDが要るのかが判ると「じゃぁこうしたら?」というのが出る気がするんだけど・・・

twinhourse
質問者

補足

投稿ではない「ページ」は全て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のタグなどがもしあったら教えていただけないかと思っています。

関連するQ&A

  • XHTMLのページにWordPress

    あるサイトの制作で、WordPressの導入が検討されているのですが、まだ一度もCMSを使ったことがないため、分からないことだらけです。 今回の制作で、基本はHTML+CSSで作成し、TOPページの一部「新着情報」や、「新製品紹介」ページ等はCMSでお客さんがいつでも更新できるようにしたいとのことです。 実際にそれが可能らしいというのは、検索して分かったのですが、具体的にどうすればいいのかがまだ分かりません。 HTMLのページをメインとして先に作成していいのか?もしくはWordPressが基本なのか? プラグインが必要なのか? HTMLページ内へのWordPressの組み込み方を教えてください。 実際にサンプルなどあるととても助かるのですが、何卒よろしくお願いします。

    • ベストアンサー
    • CSS
  • WordPressページにフラッシュ動画を設定する

    WordPressでホームページを作っていますが、トップページの写真をフラッシュタイトルに変えたいと思います。 HPはホームページビルダー17で作成していますが、CSSテンプレートではフラッシュタイトルを簡単に作れたのですがWordPressではうまくいきません。 フラッシュタイトルにすることはできるのでしょうか?教えてください。 なお、自分は、PCおよびHP作成は初心者です。

  • WordPress:利用者が特定の固定ページを削除できないようにする方法

    WordPressを、サイトのCMS(ブログではなく)として使用するために自作のテーマ(テンプレート)を作成しています。WordPressは、2.8.4です。 サイトの利用者には、固定ページの記事を作成できるようにするため、編集者としての権限を与えようと思いますが、サイトの利用者が特定の固定ページを編集することはできても削除できないようにする方法(プラグイン等でも)はあるでしょうか(編集はできないと困ります。)? 理由ですが、管理画面の「設定」→「表示設定」→「固定ページ」であるページをサイトのトップページに予め指定していても、サイトの利用者にそのページを削除されてしまうとサイトのトップページ(フロントページの表示)が「最新の投稿」にもどってしまうからです。 参考サイト等ありましたら、そちらも教えて下さい。 よろしくお願いします。

    • 締切済み
    • CSS
  • Wordpressで1ページだけまっさらなページ

    Wordpressでホームページを作成しました。どの新規ページにも 統一したメニューやフッターが自動でつくので便利です。 でも、1ページだけ、メニューもフッターも一切表示されない、まっさらなページを作りたいです。新規の固定ページや投稿だとできません。 どうしたら良いでしょう?

  • WordpressでテンプレにIDを表示できない…

    現在、初めてWordpressのテンプレートを作っています。 そこで、カスタマイズ方法についてお伺いさせてください。 行いたいこととしては、特定のIDの場合、特定の文言を表示というシンプルなカスタマイズです。 対象としているページは単一記事の投稿(single.php)です。 今回仮にカテゴリIDが10を対象としてみます。 その場合、以下のように記述しています。 <?php if(is_category('10')): ?> <p>カテゴリのIDが10のメッセージ!</p> <?php else: ?> <p>それ以外のメッセージ!</p> <?php endif; ?> と記述しています。 ちなみに、デフォルトのテンプレートを使うと上手く表示できるのですが、今回自分で作っているテンプレートなので、それが問題だと思います。 カテゴリID番号をテンプレート側で出力していない為、上手く動作しないのかな?と思いsingle.phpには こんな感じで記述してみました。 <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php $post_cat=get_the_category(); $cat_id=$post_cat[0]->cat_ID; ?> <?php $post_cat=get_the_category(); $cat=$post_cat[0]; ?> <div class="entry" id="category-<?php echo $cat->cat_ID ?>"> ↑これでページ上には一応、 <div class="entry" id="category-10">とカテゴリIDが10として表示されています。 しかしながら、前述した<p>カテゴリのIDが10のメッセージ!</p>というメッセージが表示されません…。 カテゴリIDが一致しているのに、何故分岐の処理が行われないのでしょうか?何か根本的に間違っていますでしょうか。 WPのテンプレートカスタマイズにお詳しい方いらっしゃいましたら、アドバイスをいただけませんでしょうか。よろしくお願いします。 再度お伝えいたしますが、デフォルトのテンプレートに <?php if(is_category('10')): ?> <p>カテゴリのIDが10のメッセージ!</p> <?php else: ?> <p>それ以外のメッセージ!</p> <?php endif; ?> こちらを入れると表示されますので、この部分は問題ないのかと思います。 宜しくお願いします。

  • wordpressでページの編集が反映されない

    wordpressを最近使い始めました。ページの編集について質問です。ページを編集する画面で、ビジュアルモードで編集し、更新しました。しかし、ページの内容がどこにも表示されません。ページの内容を表示させたいのですが、どうすればいいのでしょうか? ページテンプレートはデフォルトで、親は設定していません。 テーマやプラグインなどは一切インストールしていません。 表示設定は固定に変えています。 パーマリンクは一切いじっていません。 apacheを使ってローカル環境でうごかしています。 wordpressのバージョンは3.0.1です。 ブラウザはfirefoxの3.6です。 よろしくお願いします。

  • WordPress 既存のページに配置

    html+cssで作成したHPにWordPressブログを配置したいのですが やり方が分かりません。 表現として正しいか分かりませんがブログを既存のHPの一部分に 埋め込みをしたいのです。 もしくはWordPressをhtml+cssで作成したサイトと同様にカスタマイズ する方がよいのでしょうか? 検索してみたのですがなかなか答えが見つからず困っています。 ドメイン登録しレンタルしたサーバーにWordPressがありましたので インストールしたという状況です。 下記サイトの様にしたいと思っています。 http://www.ryu-dh.com/blog/ よろしくお願いします。

  • WordPressの各ページにh1を作りたい

    ここ数日、行き詰まっています。どうしても解決ができなく、 ご教示頂けませんでしょうか。 何卒よろしくお願い申し上げます。 現在、WordPressテーマのヘッダーphpに条件分岐でH1をつけようと取り組んでいます。 今できていることは、 ・トップページのh1表示 ・投稿、固定ページにカスタムフィールドにh1を作り、それぞれのページに表示 ・カテゴリー、タグの一覧ページへの表示 ・お知らせの一覧と詳細ページへの表示 できていないこと ・通常の投稿のアーカイブページへの表示 ・製品カテゴリーで設定した名前での一覧ページ(アーカイブ)への表示 となります。 もともとのテンプレートには、製品紹介用のカスタム投稿タイプが用意されていました。 管理画面上のメニューでは、 製品紹介 -新規追加 -製品カテゴリー となっています。 できていないというのは、この製品カテゴリーのところになり、 WordPress Codexの条件分岐タグページを見ながらいろいろ組み替えたり したのですが、どうしてもうまく表示することができないでおります。 ソースは以下のようにしています。 <?php if(is_front_page() && is_home()): ?> <div class="area-h1"> <h1>トップページのh1は表示されています。</h1> </div> <?php elseif(is_category()): ?> <div class="area-h1"> <h1>カテゴリー:<?php single_cat_title(); ?>で表示されています。</h1> </div> <?php elseif(is_tag()): ?> <div class="area-h1"> <h1>タグ:<?php single_tag_title(); ?> で表示されています。</h1> </div> <?php elseif(is_post_type_archive( 'news')): ?> <div class="area-h1"> <h1>お知らせ一覧に表示されています。</h1> </div> <?php elseif(is_singular( 'news')): ?> <div class="area-h1"> <h1><?php the_time('Y'); ?>年<?php the_time('M'); ?><?php the_time('d'); ?>日のお知らせで表示されています。</h1> </div> <?php elseif(is_post_type_archive( 'product')):?> <div class="area-h1"> <h1>商品一覧に表示されました。</h1> </div> <?php elseif(is_singular( 'product')): ?> <div class="area-h1"> <h1><?php echo get_post_meta($post->ID , 'h1' ,true); ?>で商品ページに表示されました。</h1> </div> ※ここから下が分かりません。 <?php elseif(is_archive()): ?> <div class="area-h1"> <h1><?php the_time('Y'); ?>年<?php the_time('M'); ?>の記事一覧、通常投稿のアーカイブページ</h1> </div> ↑ どちらか一方しか有効でない ↓ <?php elseif(is_archive( 'product')): ?> <div class="area-h1"> <h1><?php single_cat_title(); ?>製品カテゴリー毎のアーカイブページ?</h1>   </div> <?php endif ; ?> その他に試したもの (1)<?php elseif(is_tax( 'product')): ?> <div class="area-h1"> <h1><?php single_cat_title(); ?>製品カテゴリー毎のアーカイブページ?</h1> </div> (2)<?php elseif(is_category( 'product')): ?> <div class="area-h1"> <h1><?php single_cat_title(); ?>製品カテゴリー毎のアーカイブページ?</h1> </div> ここ数日、ずっとできないでおりまして、 おかしなところなどアドバイスを頂けましたら本当に助かります。 何卒よろしくお願い申し上げます。

    • 締切済み
    • PHP
  • wordpress 個別ページのテンプレート

    wordpress 個別ページのテンプレート 初歩的な質問だと思うのですが、各所でページごとのテンプレートを個別に設定出来ると書いてあるものの、ページ→新規作成内にそのような項目が見当たりません。 どのような表記で書かれているのでしょうか? また、スラッグ名.phpで出来ると言う情報も見かけたのですが、変更された様子もありません。 個別ページは単純に記事ページからサイドバーを抜いた構成にしたいだけなのですが、何か方法はあるのでしょうか。 もし判る方がおりましたらよろしくお願いします。

  • hpb18 WordPressサイトのトップページ

    よろしくお願いします。 WordPressなどは全く知りませんでした。ジャストシステムのサーバーを利用してます。何回か新しいサイトを作ってみてますが、エラー404でトップページが見つからないエラーに成ります。それ以外のBlogなどへは正しくリンクするのですが、一度表示に成ってからトップページをクリックすると、同じようにテンプレートのフルCSSで作ったサイトへ飛んでしまいます。エラーが起きたときにそこへ飛ぶようですが、トップページが何故見つからないのかが分かりません。 教えて下さい。

専門家に質問してみよう