私の読み取り方に間違いがなければ、そのロジックだとループしてしまうので、おかしな結果になる気がします。
1.TOPの新着を別のページに一覧させる
2.そのページの一部をTOPに
ということは、またTOPに戻るわけですよね?
ん~難しく考えているのかな?
私の管理サイトの一つなのですが、TOPページはページ機能で作成しています。
サイドバーに最新記事一覧という項目があるのが分かりますか?これもページ機能で作成しています。そしてTOPページに最新の5件が表示されているのが分かりますか?
こういうことがやりたいのではないですかね?
違ったらごめんなさい;)
おそらく、タイトルとページの説明にページコンテンツの一部のみ表示したいのではないかと思いますが、プラグインは知りません(汗
ページコンテンツの一部を表示するロジック的については同フォーラムの以下が参考になります。
トップページから単一記事へのリンクについて
核となる部分を抜き出すと以下のコードでしょうか?
$content = $post->post_content;
if ( preg_match('/<!--more(.*?)?-->/', $content, $matches) ) {
$content = explode($matches[0], $content, 2);
$content = $content[0];
$content = apply_filters( 'the_content', $content );
$content = str_replace(']]>', ']]>', $content);
}
コンテンツを取得し、moreで分割しています。
改行コードとなるとまた文字数が多いときはどないすんねん!となりそうなので自由に分割地点を制御出来るmore機能を使用したほうが良いかと思います。
ちなみにタイトル取得については以下のコード
$title = $post->post_title;
$title = apply_filters( 'the_title', $title );
最新記事リストの取得については既にご存知かと思うので述べません。
自分も間違えていたらすいません。。。(汗
返信が遅くなりました。
日本語に不自由してて申し訳ありません。
言葉で説明すると余計、混乱を招きそうなので図にしてみました。
お手数おかけしますがご確認下さい。
http://imagepot.net/view/123857425059.png
> kvexさん
説明がまずくてすみません。
新着は新着専用のページを作成し、新着専用ページにひたすら新着一覧を記述して、TOPページにはその新着専用ページの一部のHTMLを抽出して表示するという事をやりたいと考えています。
> shokun0803さん
返信ありがとうございます。
ページタイトルの取得や日付の挿入などはウィジェットなどで割りと簡単にできることは分かっているのですが、想定している範囲では、必ずしも新着記事であったり、新規ページのリンクだけを新着情報に掲載するわけではないため、企業サイトでよく目にする新着情報やプレスリリースのなどの新着一覧ページを作成して、例えばそのページの上から5行目までの文字列を自動的にTOPページに掲載できれば良いなと考えています。
> torisanさん
ありがとうございます。
なるほど!このコード使えそうです!!
ちょっと試してみます。
やはり難しく考えているようですよ。
まあ、こういうやり方だと問題があるという場合もあるので一概には言えませんが。
で、せっかくですのでwordpressの機能をちゃんと利用する方法を考えて。
・新着情報(もしくはプレスリリース)の投稿カテゴリを作る。
・その投稿カテゴリで最新情報を投稿する。
・新着情報カテゴリのみ(もしくはその日時・タイトルのみ)が表示されるアーカイブページをページの作成で作る。(ページテンプレートとか作るといいかも)
・TOPページにも新着情報カテゴリの新規5件などが表示されるようにソースを記述。
※一番上とか特定の場所でいいならindex.phpに直接記述。私が提示したサイトように途中などに組み込みたいならページなどでphpが使えるようになるプラグインなどを使用しましょう。
・もし通常の投稿ページやアーカイブに新着情報カテゴリを表示したくないなら該当カテゴリを表示しないようにpostをクエリ。
この方法なら正規表現で云々よりも楽だと思いますよ;)
お世話になってます。
現状、torisanさんのコードに以下のようなコードを付け加えて対処しました。
//新着ページの情報取得
$page_id = XXX; //取得するページのid
$post = get_page($page_id);
$content = $post->post_content;
if ( preg_match('/<!--more(.*?)?-->/', $content, $matches) ) {
$content = explode($matches[0], $content, 2);
$content = $content[0];
$content = apply_filters( 'the_content', $content );
$content = str_replace(']]>', ']]>', $content);
}
echo $content;
> shokun0803さん
度々ありがとうございます。
気づいたのが遅かったorz
ちょっとこの方法も試してみます。