カスタムフィールドを使って、開くとそのスケジュールの中から、指示した月分を表示させるという仕組みにしたいのです。
このあたりが若干分かっていないのですが、カスタムフィールドを入力するページは「スケジュール更新」というタイトルのページですか?カスタムフィールドに毎月現在の月を入れておいて飛ぶ?毎月カスタムフィールドを更新?
なんだか面倒くさいので、こんなのはいかがでしょう。
・年間スケジュールの月の初めにすべてアンカーを打っておく。(<div id="July">とか)
・TOPページのタイトルにアンカーをつける。(手動だと面倒なのでphpで、以下参考)
$dt = getdate();
echo "<a href=\"年間スケジュールページのURL#{$dt['month']}\">年間スケジュール</a>";
未検証だけど、動くかな?
shokun0803さん
コメントありがとうございます。
ご提示していた件も参考にやってみたのですが、ちょっと上手くできませんでした・・・。
折角ご提案していただいたのに、申し訳ありません。
このあたりが若干分かっていないのですが、カスタムフィールドを入力するページは「スケジュール更新」というタイトルのページですか?カスタムフィールドに毎月現在の月を入れておいて飛ぶ?毎月カスタムフィールドを更新?
そうですよね。分かりにくかったですね。
もう一度、ご説明させてください。
events.phpというページをeventというテンプレートで作りました。
「投稿」のところで「スケジュール更新」というタイトルで「カテゴリー」の中から「event」を選び投稿します。
HPのTOPページにはnewsとeventと設けてあり、そのevent欄に「スケジュール更新」というタイトルが掲載され、クリックするとevents.phpへジャンプするという流れです。
「投稿」を編集する過程で「カスタムフィールド」をmonth(値:Julyなど)で作り、タイトルをクリックするとその月の箇所へジャンプできるようにしたかったのです。
events.phpへどう記載してよいのかが分かりません。
アドバイスお願いします。
events.phpへどう記載してよいのかが分かりません。
う~ん、難しく考えすぎていませんか?
htmlの基礎的なことで解決できると思います。
要点は以下です。
・投稿でスケジュール更新を投稿した際にtopページに生成されるリンクアドレスを、#付きのevents.phpの該当アンカーへのリンクに変えること。
・events.phpに該当月へ飛べるようにアンカーを付加すること。
この場合の自動的に生成されるリンクアドレスにどうやって#付きのアドレスにするのか?と言うことが問題になるのですが、リンク先のurlが普遍なのであればハードコーティングもありかな?とも思います。でなければWordPressの関数を駆使して自動生成urlを作るしかありませんが、そんなに難しくはないと思いますよ;)
この場合の自動的に生成されるリンクアドレスにどうやって#付きのアドレスにするのか?と言うことが問題になるのですが、リンク先のurlが普遍なのであればハードコーティングもありかな?とも思います。
そうなんですよね。そこが問題になりますね。
確かにこの場合ハードコーティングでよさそうです。
TOPページのリンクのところに下記のように書いたらどうかなと思いました。
思いついただけなので、まだ容量を得ていませんが・・・。
events.phpにもこの場合のmonthを書き加えるべきですよね。
そこがまだわかっていない点です。
初心者の思いつきなので、ダメかもしれませんが、アドバイスお願いします。
どうしてもカスタムフィールドを使用しなければならない理由がおありですか?
でなければ、ハードコーディングする場合でも自動で現在の月を取得して、いつでも「今月」に飛べる方がよろしいのではないかと思うのですが。(前回のコード参照)
phpでは月の英語表記をそのまま取得できますので、それを利用した方が楽かな?と思います。わざわざカスタムフィールドに毎月「今月」を登録していたら大変ですよ・・・
shokun0803さん
そうですね。
毎月は大変です。
自動で現在の月を取得して、いつでも「今月」に飛べる方がいいですね。
アンカーを使う方法で作ってみます。
現在はこんな感じになっています。
<ul>
<?php query_posts('cat=7&showposts=5'); ?>
<?php if ( have_posts() ) : while ( have_posts() ):the_post(); ?>
<li>
<a>/?page_id=66"><?php the_title(); ?> <?php the_excerpt();?></a>
</li>
</ul>
最初にご提案いただいたphpを反映すると
まずは、events.phpにアンカー<div id="July">などを各月に設けて、
それを呼び出すとすると
<ul>
<?php query_posts('cat=7&showposts=5'); ?>
<?php if ( have_posts() ) : while ( have_posts() ):the_post(); ?>
<li>
$dt = getdate();
echo "<a>/?page_id=66#{$dt['month']}\"><?php the_title(); ?> <?php the_excerpt();?></a>";
</li>
</ul>
となりますか?
ちょっと全体のソースが見えないのではっきりしたことはいえませんが、おおむね合っていると思われます。
実際にコードを適用してみて、表示されたページのソースにアンカーが付いていることを確認してみましょう。リンクをクリックしてちゃんとジャンプできれば成功です。あとは、自分なりにカスタマイズすることで使いやすさもアップすることでしょう;)
shokun0803さん
試してみました。
でも、タイトルのところに
$dt = getdate();echo"
とだけでます。
`
<div id=”events”>
<h2>EVENTS</h2>
<ul>
<?php query_posts(‘cat=7&showposts=5’); ?>
<?php if ( have_posts() ) : while ( have_posts() ):the_post(); ?>
<li>
$dt = getdate();
echo”<a href=”\<?php bloginfo(‘url’); ?>/?page_id=66{$dt[‘month’]}\”><?php the_title(); ?><?php the_excerpt();?></a>”;
</li>
<?php endwhile; endif; ?>
</ul>
</div>
`
どこか間違っているのでしょうか。
phpってどうも苦手です・・・
phpのコードは<?phpと?>で囲まなくてはなりません。なので、
<li>
<?php
$dt=getdate();
echo "<a href=\"" . bloginfo('url') . "?page_id=66#" . $dt['month'] . "\">" . the_title() . the_excerpt() . "</a>";
?>
</li>
とかって、なるかな?