mizube
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: 「この記事は投稿から30日が経過しています」みたいな機能をつけたいwp-includes/formatting.php にある human_time_diff() が利用できると思います。
対象となる Unix タイムスタンプと、比較対象となる Unix タイムスタンプ (こちらは省略可能で、初期値が現在時刻) を渡すと、2 つの時刻の差分の絶対値を評価し、利用中の WordPress のロケールに基づいてフォーマットされた文字列を返します (5 days または 5 日 など)。
投稿時刻のタイムスタンプは get_the_time( ‘U’ ) で取得できますので、echo 'この記事は投稿から ' . human_time_diff( get_the_time( 'U' ) ) . 'が経過しています。';
という感じです。
ただこの関数を使うと、 60 分以内の場合は分 (15 minitues または 15 分など)、24 時間以内は時間 (5 hours または 5 時間など) を返すこと、差分を絶対値で評価するために過去の投稿と予約投稿 (未来の投稿) が見かけ上同じ値 (現在から遡って +5 日でも -5 日でも返り値は共に 5 日) であることから、あくまで日数での表示にこだわる場合や、予約投稿の存在も想定している場合には、それぞれについて適宜分岐を考える必要があります。$from = get_the_time( 'U' ); // 投稿時刻のタイムスタンプ $to = time(); // 現在時刻のタイムスタンプ $diff = $to - $from; // 遡っての差分 if ( $diff < 0 ) { // 予約投稿 echo 'この記事は' . human_time_diff( $from, $to ) . '後に投稿される予定です。'; } elseif ( abs( $diff ) <= 86400 ) { // 24時間以内 echo 'この記事は 24 時間以内に投稿されました。' } else { echo 'この記事は投稿から ' . human_time_diff( $from, $to ) . 'が経過しています。'; }
フォーラム: 開発版
返信が含まれるトピック: [2.7beta – RC2]OPML のインポートが出来ないフォーラム: プラグイン
返信が含まれるトピック: 自分が投稿した記事だけを、管理画面に一覧で表示させたいフォーラム: テーマ
返信が含まれるトピック: テーマ Misr Themeの「ページ(menu)表示エラー」について特定のテーマについて質問される場合は、テーマの配布元の URL を提示なさった方がいいと思いますよ。このフォーラムの質問ルールにもそのように書いてあります。
誰もが Misr Theme というテーマの配布元を知っているわけではありません。問題を解決できる人がいても、配布元が分からない場合、まずはテーマの配布元を探すところからはじめなくてはならず、その手間のために答えてくれないかもしれません。それは勿体ないことですよ!
というわけで探してみましたが、このテーマでよろしいですか?
これは不具合ではなく、おそらくデモページでいう home, about, contact 以外のページを表示させないという意匠なのだと思いますが、原因としては CSS で正解です。
#menu ul の width と height 、それから overflow の各プロパティがその見栄えの理由です。このテーマのスタイルシートでは width が 300px 、 height が 17px かつ overflow: hidden になっているので、その領域からはみ出した内容は隠れてしまいます。しかも #menu ul li はフロートボックスなので、収まりきらない「その他のメニュー項目」は要素ごときれいに非表示になってしまうわけです。
変更方法としては、 overflow: hidden; についてはそのままで、 width と height を弄ります。
width の適正値としては、 #menu の幅が 900px で検索フォームの幅が 220px なので、 #menu ul の width は 680px か、 もし検索フォームがメニューの下にずれても良ければ auto としてください。
height については auto にすれば、多段でよければどんどん項目を増やせます。ただし元々が多段メニューを想定したスタイルではないため、背景画像の変更や #menu li の margin の調整が必要かもしれません。フォーラム: プラグイン
返信が含まれるトピック: 自分が投稿した記事だけを、管理画面に一覧で表示させたい> ligar さん
自分がコメントをした数と、コメントをした記事の一覧を追加しました。
同じ URL にて公開しています。 よろしければ最新版をお使いください。フォーラム: テーマ
返信が含まれるトピック: 投稿ユーザーごとの記事に背景画像を変えたいうっかり二重投稿してしまったので代わりに補足します。
実は WordPress のテンプレートタグで the_ からはじまるものの多くは (一部例外があります) 、 get_the_ からはじまる対応した関数の返り値を echo するだけだったりします。
wp-includes/****-template.php という名前のファイルを開いて見てみると、他にどんなテンプレートタグがあり、どんな値を返すのか調べることが出来ます。 Author タグの場合は wp-includes/author-template.php ですね。ご参考までに。
フォーラム: テーマ
返信が含まれるトピック: 投稿ユーザーごとの記事に背景画像を変えたいthe_author_ID() はループ内における現在の投稿の投稿者の ID を echo するだけですので、当然そのような結果になりますね。
the_author_ID() を直接クラス名の一部として使えば、わざわざ分岐させる必要はありません。
以下のように直接 div の class 属性に埋め込めば、 author ごとに個別の class 属性のついた div 要素になります。<div class="post author-<?php the_author_ID(); ?>"></div>
このテンプレートの出力結果は、たとえばユーザー ID が 2 のユーザーの投稿の場合は
<div class="post author-2"></div>
となり、ユーザー ID が 5 のユーザーの投稿の場合は
<div class="post author-5"></div>
となります。このボックスの背景画像や、子孫要素のスタイルを変えるだけならこれで十分です。
/* style.css */ .post { background: #fff none center center repeat scroll; } .author-1 { background-image: url(bg/author-1.png); } .author-2 { background-image: url(bg/author-2.png); } .author-3 { background-image: url(bg/author-3.png); } .author-4 { background-image: url(bg/author-4.png); } .author-5 { background-image: url(bg/author-5.png); }
一方、class 属性だけではなく、 HTML の生成内容そのものを分けたい場合は分岐させる必要がありますが、その場合は値を echo しないで return する get_the_author_ID() が使えます。
<?php if ( get_the_author_ID() == 2 ) : ?> <div class="post tarou"> <h2>太郎: <?php the_title(); ?></h2> <div class="textBody"> <?php the_content( '続きを読む...' ); ?> </div> </div> <?php elseif ( get_the_author_ID() == 5 ) : ?> <div class="post hanako"> <h2>花子: <?php the_title(); ?></h2> <div class="textBody"> <?php the_content( '続く&heart;' ); ?> </div> <?php if ( $kibun = get_post_meta( $post->ID, '今の気分', true ) ) : ?> <dl class="meta"> <dt>今の気分</dt> <dd><?php echo $kibun; ?></dd> </dl> <?php endif; ?> </div> <?php else: ?> <div class="post"> <h2>その他: <?php the_title(); ?></h2> <div class="excerpt"> <?php the_excerpt(); ?> </div> </div> <?php endif; ?>
ktarrow さんの試されたコードでは
if ( the_author_ID('1') )
などとされていますが、 the_author_ID() や get_the_author_ID() に値を渡しても意味はないので注意してください。
get_the_author_ID() は true や false ではなく、ループ内における現在の投稿の投稿者の ID を返しますので、分岐の際は、if ( get_the_author_ID() == 1 )
というように get_the_author_ID() が返す値と数値を比較する必要があります。フォーラム: テーマ
返信が含まれるトピック: 投稿ユーザーごとの記事に背景画像を変えたいCodex はご覧になりましたか?
記事ごとに違う class 属性を付与する場合でしたら、 the_author_ID() が使えます。
WordPress Codex 日本語版の「テンプレートタグ/the_author_ID」のページにサンプルが載っています。# ニックネームは日本語である可能性があるので XHTML の class 属性としては使えませんし、
# 各ユーザーが任意に変更できるので、テーマをカスタマイズする側としてはやりにくいと思います。フォーラム: プラグイン
返信が含まれるトピック: 自分が投稿した記事だけを、管理画面に一覧で表示させたい> ligar さん
修正版を公開しました。それと、 ligar さんの名前のつづりを間違えてました。ごめんなさい。
出来れば、自分がコメントをした数と、コメントをした記事の一覧も取得出来ると、嬉しいなぁ・・・と思ったりしました^^;
私もコメントの情報は入れた方がいいかなと思ってたんですが、余計なことかもしれないと思い省きました。うまくまとめられれば、時間があるときに追加したいと思います。
フォーラム: プラグイン
返信が含まれるトピック: 自分が投稿した記事だけを、管理画面に一覧で表示させたい> liger さん
ご指摘有り難うございます。私の方でもカテゴリーでの絞り込みのリンクが空になっているのを見つけましたので、あわせて修正します。修正版を公開後、またこちらに書き込みます。# まだ色々ありそうな気がします。。。
フォーラム: プラグイン
返信が含まれるトピック: 自分が投稿した記事だけを、管理画面に一覧で表示させたい> liger さん
テストが十分でないので、もし何かおかしなところがあったら是非ご連絡ください。
早速ですが Plugin URI が間違っていました。その部分は管理ページのプラグイン一覧でのプラグイン名のリンクの URL なので、動作そのものには関係ありませんが、出来れば差し替えをお願いします。
公開中の zip ファイルについては既に差し替えを行いました。フォーラム: プラグイン
返信が含まれるトピック: 自分が投稿した記事だけを、管理画面に一覧で表示させたいご希望のものと違うかもしれませんが、面白そうなのでウィジェットを作ってみました。
本当はコードをフォーラムに貼り付けたかったのですが、スタイルの調整が必要だったので、CSSなどまとめてプラグインにして、以下で公開しています。URL を怪しく思われるかもしれませんが、実はプラグインを公開できるプライベートなスペースがないので、無料の @pages を借りて WordPress を設置し、そこから公開しているものです。
> lilyfan さん
おお、添削ありがとうございます。確かに仰る通りですね!
rtl の他にも独自に ja.mo をカスタマイズして、suffix にしている場合なども考えられますね。
とすると、 remove_page_title_prefix って関数名から不適切かも? 勉強になりました。フォーラム: テーマ
返信が含まれるトピック: プロフィールの経歴を改行したい解決してよかったです。是非諦めずにがんばってください。
それから、ちょっと訂正します。前の書き込みで current user と書いてる箇所は current author のつもりでした。直前に get_userdata() があったために user と author がごちゃ混ぜになってしまいました。ちゃんと誤字がないか読み返してはいたのですが、自分の書いた説明を自分が理解できなかったようです、すみません。
フィルタで取り除くことが出来ます。
テーマの functions.php に以下の内容を追加してください。<?php function remove_page_title_prefix( $title = '' ) { if ( empty( $title ) || !is_page() ) return $title; $protected = preg_quote( sprintf( __('Protected: %s'), '' ), '/' ); $private = preg_quote( sprintf( __('Private: %s'), '' ), '/' ); $search = "/^(?:" . $protected . "|" . $private . ")(.*)/"; return preg_replace( $search, "$1", $title ); } add_filter( 'the_title', 'remove_page_title_prefix' ); ?>