部分的にWordPressを取り入れる効率の良い方法
-
静的なサイトの日記ページをWordPressで動的にしようとしています。
その日記ページだけ構築したかったので、手探りながらも<?php require_once( './wp-load.php' ); ?>で、投稿した記事をループさせることができました。
しかし、ちょっと複雑でして内容というのは今現在の月ではなく、先月のことを書く日記でして…
構造のほうが<h2>日記</h2> <p>2010年8月</p> ーーーーーーーーーここからーーーーーーーーー <span>17日(火)</span> <h3>○○○に行ってきた</h3> <p>本文が入ります。本文が入ります。本文が入ります。</p> ーーーーーここまでがループしますーーーーーーとなっております。(わかりづらくてすいません。)
ここで問題ですが、<p>2010年8月</p>の部分で月を一月前にズラして表示するのはできるのかという疑問もありますが、そもそも月を表示する部分を<?php the_date(); ?>としてるんですが、表示されません。
他にもいろいろと不具合があるのですが、WordPressを部分的に取り入れるのには限界があるのでしょうか?だいぶ読みづらい文になってしまいましたが、どうかご教授願います。
よろしくお願いします。
-
mayama27さん、こんにちは。
2010年8月の部分で月を一月前にズラして表示するのはできるのか
独自のphpで実装しているのであれば、月の指定も変数などで持っているのではないですか?
そうであれば、1引くのみで表示できるかと思いますが。月を表示する部分を<?php the_date(); ?>としてるんですが、表示されません。
the_date関数は、同じ日の投稿が続いたりすると表示されないケースがあります。この場合は替わりにthe_time関数を使えば解消できます。
もしくは、the_postやsetup_postdata関数を実行していないケースが考えられます。基本的には、wp-load.phpを読み込むと、必要なデータ、関数は全て使えますので、特に問題はないはずです。
jim912様、解答ありがとうございます。
基本的には、wp-load.phpを読み込むと、必要なデータ、関数は全て使えますので、特に問題はないはずです。
を聞けて、少し安心しました。
独自のphpで実装しているのであれば、月の指定も変数などで持っているのではないですか?
そうであれば、1引くのみで表示できるかと思いますが。ということも聞けて安心したのですが、情けなくもまだwordpressの中でのphpしか知りません。具体的に1引く関数と言いましょうか。ヒントだけでもくださればと思います。
よろいくお願いします。独自のphpで実装しているのであれば
これはphpで
date()とかして日付を表示しているなら・・・という意味ですね。もしかしてそうされてない?日付部分のコード(生成後のhtmlソースではなくて)を提示すると話が早いかもしれません。<p>2010年8月</p>の部分を現在の日付のタイムスタンプから生成しているのであれば月の数値を-1すれば思った表示になりますね;)えっと、例ですか・・・
<p><?php date('Y年n月',strtotime(-1 month)); ?></p>とかっすかねぇ?(未検証)kvex様、解答ありがとうございます。
get_the_dateで月表示試したのですが、表示されませんでした。
自身で確認していてこれが原因じゃないかと思ったのですが(冒頭に書き足すべきでした..すいません)今回、クライアント様が書く日記ということなので簡潔にしたいと思い、Custom Post Type UIというプラグインを用いて、通常ダッシュボードから書く投稿画面とは別に○○日記という名の投稿記述する場所とカスタムフィールドで
<span>17日(火)</span>部分を入力するもの(loop.php内:<span><?php echo post_custom('day'); ?></span>)だけを用意したカスタム投稿となっております。因みに、loop.phpを読み込んでる大本のテンプレートは
<?php include('./wp-content/themes/twentyten/archive.php'); ?>としてarchive.phpを使っています。根本的にカスタム投稿タイプだからうまく月などのデータが表示できていないのか?
長文になってしまいましたが、どうかよろしくお願いします。
こんにちは
<?php require_once( './wp-load.php' ); ?>しているファイルのコードを示していただくとさらに解答がつきやすくなると思います。shokun0803様、解答ありがとうございます。
返答が遅くなり申し訳ありません。
<p><?php date('Y年n月',strtotime(-1 month)); ?></p>のお考えとても参考になります。1引くというのがあまり想像できなかったものでして…。
あれから他ブログなど見て自分なりに考えましたが、全体をwpで作るよりもデザインが変わらないのであればその日記部分だけをwpで単独で作った方がいいのではないか。という初歩的な考えに至り、無理矢理<?php require_once( './wp-load.php' ); ?>でwpを引っ張ってくるとやはり動的な部分で限界がきてしまうと感じました。
例えば、<?php wp_get_archives(); ?>で出力された過去の月アーカイブページを見たい時にクリックするとデフォルト「twenty ten」のアーカイブページが表示されてしまうなど…。【追記】他にも、静的サイトで使っているロゴなどの画像が入ってるimageフォルダはwp
でまったく同じデザインで作ったthemeのフォルダにも複製しなくてはいけないのかなど…。
この場合、wpで作ったものから通常あるimageフォルダにリンクできれば一番省略できるのかなと思うのですが。なんにしても月表示を一月前表示にすることは全体をwpで作ったとしても課題ならざるをえないと思いますが、少し作り方の方向性を変え、頑張りたいと思います。
ありがとうございました。
nobita様、解答ありがとうございます。
かしこまりました。とても読みづらいと思いますが、すいません。<?php require_once( './wp-load.php' ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="keywords" content="" /> <meta http-equiv="description" content="" /> <link type="text/css" rel="stylesheet" href="css/default.css" /> <title>タイトル</title> </head> <body class="diary"> <div id="wrap"> <div class="clearfix"> <div id="header"> <h1>ロゴ</h1> <ul> <li>メニュー01</li> <li>メニュー02</li> <li>メニュー03</li> </ul> <ul> <?php wp_get_archives(); ?> </ul> </div> <div id="content"> <h2>日記</h2> <?php include('./wp-content/themes/twentyten/archive.php'); ?> </div> </div> <div id="footer"> <p>フッター</p> </div> </div> </body> </html>こ、これで大丈夫でしょうか。長文すいません。
wp-load.phpを読み込んでるだけの質素な感じですが、archive.phpを読み込んでその中に記述してあるloop.phpが内容を出力してるという感じなのですが…。よろしくお願いします。
<div id="content"> <h2>日記</h2> <?php include('./wp-content/themes/twentyten/archive.php'); ?> </div>wordPressが想定していない使い方なので、思ったような表示にならないのではないかと思います。
対策としては、現在このコードが記述されたファイルには、ルートのindex.phpをコピペして、自分専用のcategory.phpを含んだテーマファイルを準備するのが一番簡単だと思います。
技術的には、
<?php require_once( './wp-load.php' ); ?>でワードプレス関数を使えるようにして、テーマファイルは使わずに自力構築するという事もできると思いますが、配列やオブジェクトを自力でhtmlの出力に変換する必要があるのではないかと考えます。※define(‘WP_USE_THEMES’, true);
質問にある日記の項目だけで用が足りるのであれば、MYSQLのpostsテーブルに全部入っていると思いますので、MYSQLから直接取り出すのもいいと思います。
nobita様、解答ありがとうございます。
いやはや、category.phpでした!ありがとうございます!
まったく気がつきませんでしたが、category.phpなら自分の好きなカテゴリに区分けして、任意の月別で表示出来ます。
もうずっとarchiveで表示することばかり考えてました。ホントに質問して良かったです。現時点では、日記の部分だけを同じデザインにし、wpで構築しているのですが、最後にもうひとつ問題があります。
それは、category.phpをブログのトップに表示できないかということです。
フロントページなどは必要ないと思うので、index.phpで表示されるようになっているのですが、自分の最初の質問を見ていただけると幸いなのですが、
<p>2010年8月</p>の部分がなぜか表示されません。ですが、<?php wp_list_categories(); ?>で出力したカテゴリー名をクリックし、category.phpを開くとちゃんと表示されています。何度もすいませんが、category.phpをトップで表示できる良い方法はありませんでしょうか?
よろしくお願いします。category.phpをトップで表示できる良い方法はありませんでしょうか?
よい方法かどうかわかりませんが、
指定したカテゴリをトップページに表示する一例です。
お役に立てば幸いです
home.php
<?php get_header(); query_posts('cat=11');?> <div id="container"> <div id="content"> <h1><?php single_cat_title( '', false );?></h1> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <strong><?php the_date('Y n j');?></strong> <div class="entry"> <?php the_content(); ?> </div> <?php endwhile; else: ?> <?php endif; ?> <?php wp_reset_query();?> </div><!-- #content --> </div><!-- #container --> <?php get_sidebar(); ?> <?php get_footer(); ?>
トピック「部分的にWordPressを取り入れる効率の良い方法」には新たに返信することはできません。