遅れましたが、nornorさんが解説された通りです。
両方とも合ってると思います。はき出されたXHTMLは必ずチェックして下さい、その方が確実です。
で、お題の
wordpressによるサイト構築で必要なスキル
ですが、必要なのはXHTML+CSSでウェブスタンダードなサイトを作るスキルです。PHPは要りません。nornorさんもおっしゃられましたが、多くの事はテンプレート・タグのパラメータを変える事で達成できます。特に一般的なブログのレイアウトと表示項目であれば、ほとんどの場合大丈夫です。
WPでもMTでも、テンプレート・タグは「始まり」と「終わり」があります。確かMTは<% ~ %>でしたっけ?何か独自のタグ形式になっていたと思います。WPは独自形式を採用せずにコアファイルにて使われているのと同じ、PHPの記述方式を採用した、と思う方がわかりやすいのではと思います。乱暴に言ってしまえば、「PHPの皮をかぶったXHTML」です。
なのでPHPよりも、CODEX等でテーマとテンプレートの仕組み、テンプレート・タグの種類とそれらのパラメータを一度全て目を通す方が良いです。PHPで知っておく事柄もでてきますが、それらはPHPの書き方、たとえばPHPは必ず<?phpで始まり?>で終わる、とかで、テンプレートを編集する内に自然とわかってきます。
確かにCODEXの wp_get_archivesはちょっと言葉足らずな気はします。まだ翻訳が完成していないのはさておき、あれは翻訳元の本家英語版があの程度の説明しか書いていないのです。結局は、フォーラムで聞いたり、ググってブログの記事を探したり、テーマをダウンロードして参考にしたりするのが一番な方法と言うことになると思います。あと日本語で書籍も何冊か出版されているので、そちらも目を通してみるのも良いかと。
初心者でも遠慮する事はないと思いますよ!
この度は、心ある識者の方々のアドバイスを多数いただき、いろいろ学ぶことができました。
まだまだ思うように扱えませんが、パラメータの設定の件から
皆様のおっしゃる「phpは知らなくてもなんとかなるケースが多い」の意味が理解できましたし、
「PHPの皮をかぶったXHTML」の意味も含めわかってきました。
もう一歩だけ踏み込みたいです。(すみません)
エントリーの投稿日時を表示したく、
先ほどのタグ内、beforeあるいは、after内に
<?php the_time(‘n/j H:i’); ?>
を入れてみたところ、この使い方はまずいようで、エラーがでました。
さすがにこの形まではパラメータによる設定は無理なのでしょうか。
また別の使い方があるのでしょうか。
適当にテンプレートを落してきて、それっぽいところを見てはいるものの、
なかなか見つけられず。。。
さすがにこの形まではパラメータによる設定は無理なのでしょうか。
無理です。CODEXにも書かれていないように、wp_get_archivesには記事が投稿された日時を取得して表示するパラメータは用意されていません。エラーが出てしまう理由はおそらく<?php~?>の中に<?php~?>を記述しているからだと思います。
こういうときこそ、最初で出てきた
<ul>
<?php query_posts('showposts=3'); ?>
<?php while(have_posts()): the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endwhile; ?>
</ul>
が使えます。使わざるを得ない、と言う方が正しい。
<?php wp_get_archives('type=postbypost&limit=20&format=custom&before=<li class="AAA"><span>&after=</span></li>'); ?>
だとたとえば、
<ul>
<?php query_posts('showposts=20'); ?>
<?php while(have_posts()): the_post(); ?>
<li class="AAA"><span><?php the_time('n/j H:i'); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span></li>
<?php endwhile; ?>
</ul>
です。
Toruさん
度々ありがとうございます。
>エラーが出てしまう理由はおそらく<?php~?>の中に<?php~?>を記述しているからだと思います。
そうでした。
ダメなのを知りませんでした。
前々回のレスで私が書いたような2つの書き方の差異が自分の中でぼやけているので、
自由度の低い(私見ですが)やり方(wp_get_archivesの方)を踏むのであれば、
最初から柔軟性のありそうなやり方(query_postsの方)を選択した方がスムーズな気がします。
とはいえ、
使わざるを得ない、と言う方が正しい
「できれば使いたくない(使わない方がいい)」という印象を受けます。
lilyfanさんのコメントでも、
バージョン間の互換性を考えると、より高度な API (wp_get_archives など) を利用した方がよい
とありました。
まだ、これを実感できていないので、
不正でないのであれば、他のケースでもquery_postsの方でまずは考えていこうかと思います。
今のスキルではどうしても高度に思えなくて。。。
長くなってしまいましたが、お付き合いいただいた皆様、ありがとうございました。
疑問をいいろいろ解消できました!
またすぐ壁にあたると思いますが、
懲りずにまたアドバイスいただけるようスキルアップしていきたいと思います。
不正でないのであれば、他のケースでもquery_postsの方でまずは考えていこうかと思います。
query_postsの使いすぎでよく起こる問題とその対処法はこれ↓を読んでください。yoshiさんがわかりやすく説明されています。
その記事のシングルページに行かない??
わかりやすい、わかりにくいは人によって違いますからね~。ただ柔軟性で言えば、「どちらの方が柔軟か」ではなく「どちらもできる方が、片方しかできない方に比べて柔軟だ」と僕は思います。シンプルなHTMLの時はテンプレートのコードもシンプルに。
Toruさん
ありがとうございます!
確かにどちらも会得している方が柔軟性がありますよね。
スムーズにそうなりたいところです。
query_posts=ループのときに使う
new WP_Query=?!(初対面)
くらいの知識しかないので、せっかくいただいた有益なアドバイスを理解できる力がないです。。。
ホントすみません。
けっこう重要そうな感じなので、即お尋ねしたいところですが、
本題と反れてしまうので、自分でもちょっと調べて
解らない部分を別立てさせてもらいます。
正直わからないとこばかりなんですけど。。。。w
解決済みになってますが、ちょっと気になるので補足させてください。
query_posts=ループのときに使う
query_posts
を使うのは、”メインの”ループを変更して、そのページのコンテンツ自体を変えてしまう時だけです。極端な例では、ある個別ページの内容を別記事に差し替える、みたいなことをやる時です。
query_posts
を使うとループ外の様々な個所でも動作が変わってしまいますので、メインループと別に記事のリストを表示する目的で使うべきではありません。あえていうなら「不正な使い方」で、思わぬところで誤作動を招きます。
※英語版Codexにはしっかり「やるべきでない」と書いてあります。
記事を取得して自由に表示したい時は、get_postsをお使いください。narumiさんのquery_posts
バージョンと同じように表示できます。
yoshiさん
ご親切にありがとうございます。
早速手間の記述のquery_postsの部分をget_postsに変えてみたところ、まったく同じようにへ表現できました。
正確にはパラメータの部分が機能しなかたので、囲っているタグを、
<?php $myposts = get_posts(‘numberposts=3’);
foreach($myposts as $post) :?>
~~~
<?php endforeach; ?>
に書き換えました。
そもそも意味がわかっていないまま、どこかかソースをコピーしてもってきたので、
その元も間違ってたわけですね。
query_postsを使うのは、”メインの”ループを変更して、そのページのコンテンツ自体を変えてしまう時
よくわかりませんが、そんなことができるんですか。。
情けないほどスキルが追いついていませんので、ご指示とおりのことしかできませんが、
これから同じようなことをする場合は、get_postsを使っていきます。
(get_postsとquery_postsの違いがわかってませんが。。。w)