developer
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: 日替わりで投稿をランダムに表示これ以上ないくらい求めた通りのもので、コード自体もすごく勉強になります。
日付順の方も参考にさせて頂きます。
ありがとうございます。
gatespaceさんとnobitaさんも、ありがとうございました。フォーラム: 使い方全般
返信が含まれるトピック: 日替わりで投稿をランダムに表示フォーラム: 使い方全般
返信が含まれるトピック: 日替わりで投稿をランダムに表示こんにちは。
投稿の編集・新規の投稿・新規の予約投稿はいずれも問題なく更新されました。
更新の際にキャッシュされた投稿の一覧が変わってしまう様な事も無いみたいです。追記
投稿の方には更新が確認されましたが、キャッシュされた一覧には更新した内容が反映されていませんでした。
キャッシュされているので当然かもしれませんが、出来ればキャッシュ側にも更新を反映させられると良いですね…。フォーラム: 使い方全般
返信が含まれるトピック: 日替わりで投稿をランダムに表示まだ日付変更時の確認をしていませんが、とりあえず以下の様な形でランダムに表示させる事が出来ました。
キャッシュの生成も正常に出来ているとは思うのですが、あまり自信がないのでおかしなところがあったら指摘して頂けると助かります。<ul> <?php // 現在のタイムスタンプ $current_time = time() + 32400; // 同日 23:59:59 のタイムスタンプ $refresh_time = mktime( 23, 59, 59 ); // 23:59:59 までの秒数 $cache_limit = $refresh_time - $current_time; $args = array( 'posts_per_page' => '10', 'orderby' => 'rand' ); $random_daily_posts = get_transient( 'random_daily_posts' ); if ( $random_daily_posts === false ) { $random_daily_posts = get_posts( $args ); set_transient( 'random_daily_posts', $random_daily_posts, $cache_limit ); } foreach ( $random_daily_posts as $post ) { setup_postdata( $post ); echo '<li><a href="' . esc_attr( get_permalink() ) . '">' . esc_html( get_the_title() ) . '</a></li>' . "\n"; } wp_reset_postdata(); ?> </ul>
フォーラム: 使い方全般
返信が含まれるトピック: 日替わりで投稿をランダムに表示ちょっとした工夫で対応出来るのですね。
ありがとうございます。
ちなみに、確認した時に時差分のずれが生じたので次の様に修正しました。$current_time = time() + 32400; // 現在のタイムスタンプ $refresh_time = mktime( 23, 59, 59 ); // 同日 23:59:59 のタイムスタンプ $cache_limit = $refresh_time - $current_time; // 23:59:59 までの秒数
これを元に進めてみようと思います。
フォーラム: 使い方全般
返信が含まれるトピック: 日替わりで投稿をランダムに表示ありがとうございます。
こんなAPIがあったのですね。
データのリフレッシュは秒数指定ではなく日付変更を境にしたいのでそれができるのかが不明ですが、一先ずリンク先を見ながら手を加えてみようと思います。フォーラム: 使い方全般
返信が含まれるトピック: セレクトボックスで送信されるクエリーについてadd_query_argでなんとか出来ないかと思い試行錯誤してみましたが解決できませんでした。
何故タグだけ?という疑問は残りますが、諦めて気にしない事にしました。フォーラム: 使い方全般
返信が含まれるトピック: category.phpでカテゴリーに属するタグだけを表示get_objects_in_term
の第一パラメータに整数ではなく配列で複数指定すると重複する可能性がでてくるんですね。
今回は大丈夫という事で安心しましたが、こちらも後学のために覚えておこうと思います。
細かな疑問にまで答えて頂いて感謝します。
ありがとうございました。フォーラム: 使い方全般
返信が含まれるトピック: category.phpでカテゴリーに属するタグだけを表示次のコードで求めていた結果を得ることができました。
gblsmさんに適切な関数を教えて頂いたおかげで、特に難しく考えずにできました。
ただ、3.にあるタグの配列の重複というのは、表示上では特に問題がなさそうだったので行っていないのですが、私が勘違いしているだけで、そのような処理も組み込んでおいた方が良いのでしょうか?<?php // 現在のカテゴリーのIDを取得 $cat_id = get_query_var( 'cat' ); if( !$cat_id ){ $cat_now = get_the_category(); $cat_now = $cat_now[0]; $cat_id = $cat_now -> cat_ID; } // 表示中のカテゴリーに属する投稿のIDを配列で取得 $current_posts = get_objects_in_term( $cat_id, 'category' ); // 表示中のカテゴリーに属する投稿に付けられたタグの情報をまとめて取得 $current_tags = wp_get_object_terms( $current_posts, 'post_tag' ); if ( is_category() and $current_tags ) { echo '<ul>' . "\n"; foreach( $current_tags as $tag ){ echo '<li><a href="' . get_bloginfo( url ) . $new_uri = add_query_arg( 'tag', $tag -> slug, $_SERVER['REQUEST_URI'] ) . '">' . $tag -> name . '</a></li>' . "\n"; } echo '</ul>'; } ?>
フォーラム: 使い方全般
返信が含まれるトピック: category.phpでカテゴリーに属するタグだけを表示ありがとうございます。
大分行き詰まっていたので、アドバイスを頂けて嬉しいです。
あまりPHPには明るくないですが、提案して頂いた3点を踏まえて試行錯誤してみようと思います。
引き続き解決策は募っていこうと思いますが、その間に試行錯誤の結果が出たら、改めてこちらのトピックで報告致します。フォーラム: 使い方全般
返信が含まれるトピック: category.phpでカテゴリーに属するタグだけを表示コメントありがとうございます。
もう少し詳しく書くべきでした。[Post-A] Category: animal > dog Tag: wan, little [Post-B] Category: animal > cat Tag: nyan, little [Post-C] Category: animal > dog Tag: wan, big
上の様なカテゴリ・タグが与えられた投稿があった場合、カテゴリー「dog」を開いた時にタグ「wan」「little」「big」だけが表示されるようにしたいのです。(現状ではタグ「nyan」も表示されてしまいます)
ただ投稿のあるタグを全て表示してアクセスするだけだと、カテゴリー「dog」が維持されずに
http://example.com/tag/wan/
とタグアーカイブを開く事になってしまいます。これを次の様に、カテゴリを維持したままタグを選択する事で投稿を絞り込む様な作りにしたいのです。
http://example.com/category/dog/?tag=wan上の状態ではタグ「wan」が選択されているので表示される投稿は「Post-A」「Post-C」です。
次にこの状態でタグ「big」を選択すると、URLは以下のようになり、表示される投稿は「Post-C」になります。
http://example.com/category/dog/?tag=bigここでタグ「nyan」を選択してしまうと、カテゴリー「dog」には該当する記事が存在しないので記事が存在しないと返されてしまいます。
説明下手なので分かり難いかもしれませんが、上の様な事が実現したい内容です。
フォーラム: 使い方全般
返信が含まれるトピック: カテゴリーとタグを維持したカスタム分類の一覧フォーラム: 使い方全般
返信が含まれるトピック: 複数のキーからカスタムフィールドの値を取得ありがとうございます。
もう少しで解決出来そうなので継続して頑張ってみようと思います。尚、タイトルにある件については既に解決していますので、こちらのトピックは解決済みとします。
フォーラム: 使い方全般
返信が含まれるトピック: 複数のキーからカスタムフィールドの値を取得分かり辛くてすみません…。
提示して頂いた方法にも辿り着いてはいたのですが、キーに値が連なって表示されるのではなく、以下の様な形でキーと値を1:1のセットで表示して、尚且つ全ての値を出力したいのです。<ul> <li>キーと<br />その値</li> <li>キーと<br />その値</li> <li>キーと<br />その値</li> </ul>
the_metaと似た様な表示結果ですが、表示件数の設定や表示するキーの指定、値だけを対象としたランダムな表示(ランダムに表示してもきちんとキーも対で表示される)など色々と細かな制御を加えたいので最初の様なコードになっていました。
提示して頂いたコードと同じものも最初は利用していたのですが、キーに連なる形なのでどうしてもキーごとに値が区切られてしまう点がネックとなって利用を止める結果になりました。
制御云々という点についてはphpの方を勉強をしていけば解決出来ると思うので良いのですが、このカスタムフィールドを上記の様な形で表示させる方法を求めています。
フォーラム: 使い方全般
返信が含まれるトピック: 複数のキーからカスタムフィールドの値を取得以下のコードで指定したポストのカスタムフィールドの値を全て表示する事が出来ました。
尚、最初の書き込みにあるキーの指定という部分は自分で解決しようと思います。
しかし、それとは別にどうしてもうまくいかない点が一つあります。<?php $post_id = 10; $limit = 5; $all_values = array(); $custom_fields = get_post_custom($post_id); $custom_keys = get_post_custom_keys($post_id); foreach ($custom_keys as $key) { if ("_" != substr($key,0,1)) { $values = $custom_fields[$key]; $all_values = array_merge($all_values,$values); } unset($key); } if ($all_values) { $n = 0; echo "\n" . '<ul>' . "\n"; foreach ($all_values as $key => $value) { if ($n == $limit) break; echo '<li>' . $key . '<br />' . $value . '</li>' . "\n"; $n++; unset($all_values[$key]); } echo '</ul>' . "\n"; } ?>
echoで出力している$keyに、カスタムフィールドで最後に追加したキー名しか表示されず、値に紐付いた形で表示されないので、これをきちんとキーと値が紐付いた状態で表示させたいのです。
何か良い知恵がありましたらご教示下さい。