WordPressの質問(q10013003):$offsetのコントロール方法は?

このQ&Aのポイント
  • WordPressの質問(q10013003)の続【投稿ページ その3】で、break,continue構文以外で$offsetをコントロールする方法について教えてください。
  • 質問内容を要約すると、$offsetをコントロールするための良い方法を探しているとのことです。
  • 回答としては、データベースから取得したRSSを分けて保存し、そのまま出力する方法をおすすめします。この方法ならループをせずに$offsetをコントロールできます。また、画像1,画像2,画像3のURLについても同じサイトから取得する予定であれば、storage_rss.phpと処理を分ける必要はありません。SQLから操作するかどうかは詳細がわかりませんが、必要に応じて使い分ければ良いでしょう。
回答を見る
  • ベストアンサー

WordPressの質問(q10013003)の続

【投稿ページ その3】 ・break,continue構文以外で$offsetをコントロールする方法を探しているんですが、何か良い方法はありますでしょうか? こまかくわけるとこうですね。 ==== RSS バナー広告 記事前編 RSS バナー広告 記事続編 RSS コメント 前後の記事リンク ==== RSSと他のものの登場回数が異なるのでループしない方法でいきましょう。 最初にデータベースからRSSを取得して、$rss1、$rss2、$rss3のみっつに分けてためておきます。 あとはそのまま出力する方法でどうでしょうか。 ---- $rss1の出力 バナー広告 記事前編 $rss2の出力 バナー広告 記事続編 $rss3の出力 コメント 前後の記事リンク ---- A.回答ありがとうございます。RSSの出力については理解できたのですが、今のstorage_rss.phpと処理を分けるのか気になります。RSSは同じサイトから出力する予定です。 画像1,画像2,画像3は固定ページと投稿ページそれぞれ同じサイトのURLからを引っ張ります。 画像1タイトル1の固定投稿ページのRSS 画像2タイトル1の固定投稿ページのRSS 画像3タイトル1の固定投稿ページのRSS でURLは同じものにします。 それともSQLから操作するのでしょうか?

  • PHP
  • 回答数85
  • ありがとう数106

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.85

ところで、確認したいことがあります。 front-page.phpとpage-secound.phpとpage-third.phpの違いは、画像数が1か2か3でその一覧表示スタイルと、RSSの取得元だけで、ランキング表示その他は、それぞれの画像数の記事になるだけで、デザインは同じですよね。 それと、3パターンあると言われていた、アーカイブとカテゴリーと検索は、その一覧表示のデザインがfront-page.phpとpage-secound.phpとpage-third.phpのように異なるだけで他は同じですよね。

php_learn
質問者

お礼

ファイル自体を識別させて表示方法の切り替えを行うのか、それぞれの機能の箇所で分岐を行うのかどちらかになると思われます。

php_learn
質問者

補足

おっしゃる通りです。それぞれfront-page.php,page-secound.php,page-third.phpと同じデザイン記事表示になります。 画像数が異なるため、間接的にカスタムフィールドで表示ファイルの切り替えを行うように考えています。

その他の回答 (84)

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.74

勘違いしていました。 header.phpはfront-page.phpよりも先に実行されると思っていましたが、front-page.phpからheader.phpを呼んでいたので全然問題ありませんでした。 ランダム表示も画像数に合わせられそうです。 合わせた方がいいですか。

php_learn
質問者

補足

ランダム表示は今の件数のままがいいのですが、4件で可能でしょうか?

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.73

・画像にそれぞれのURLリンクを張りそこから誘導させるつもりです。 まだ実装されていないのですね。 どのようなURLになるのかわかりませんので、実装時に正常動作しないかも知れませんが、遷移のテストはせずにいます。 ・こちらの処理にはカスタムフィールドを設けずにそのまま置いておくことはできないのでしょうか? そのまま置いておいて大丈夫です。 画像数に対応していないのでどれが表示されるかわからないだけです。 どの道、対応したくても対応できないかも知れないのであしからず。

php_learn
質問者

補足

回答ありがとうございます。 front-page.phpに下記の画像をhtmlでおいていただいて試していただくことは可能でしょうか? https://imgur.com/fuK3F1V.jpg

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.72

・ランキングを表示する際に画像の大きさを固定することは可能でしょうか? もとの以下のコードでは、 ---- the_post_thumbnail( 'post-thumbnail') ---- こちらによると、 https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_post_thumbnail 「'post-thumbnail' – テーマ(の functions.php)内で set_post_thumbnail_size() を使って設定したサイズ。」とのことです。 この設定を使うかですが、他のところにも影響してしまうので、よしておいた方がいいのでしょうね。 そこにも書かれていますが、書き方はこうだそうです。 ---- the_post_thumbnail( array( 100, 100 ) ) ----

php_learn
質問者

補足

下記のコードについてお聞きしたいのですが、'post-thumbnail'というのは消しても問題ないでしょうか? こちらを削除しますと大きさの指定がPHPで出来るのですが、画像の大きさを維持したまま出力するコードでしょうか? ※該当箇所 <div class="mosaic-backdrop"> <?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'post-thumbnail', array(100, 100)); } ?> </div> ※該当コード <!-- ▼ 週間ランキング ▼ --> <div class="main-wrap" style="width: 300px;"> <section class="column-inner"> <?php $args = array( 'numberposts' => 10, //表示数 'meta_key' => 'pv_count_month', 'meta_key' => 'single_rss_feed1', 'orderby' => 'meta_value_num', 'order' => 'DESC',); $posts = get_posts($args); if ($posts) : ?> <ul class="parent_box"> <?php foreach( $posts as $post ) : setup_postdata( $post ); ?> <li class="child_box"> <a href="<?php echo get_permalink(); ?>" width: 97px;height: 130px;> <div class="mosaic-backdrop"> <?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'post-thumbnail', array(100, 100)); } ?> </div> <div class="masking"> <span class="masktext"><?php the_title(); ?><span id="likeCount3"></span></span> </div> </a> <div class="info topinfo"> <p> <?php $count = sprintf("%02d",$count); // 一桁を二桁に echo $count + 1; // 01を出力 $count++; ?> </p> </div> <?php echo getPostViewsMonth(get_the_ID()); // 記事閲覧回数表示 */?> <?php endforeach; wp_reset_postdata(); ?> </li> </ul> <?php else : ?> <p>アクセスランキングはまだ集計されていません。</p> <?php endif; ?> </section> </div>

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.71

【コードまとめ その5】 front-page.php、page-secound.php、page-third.phpのどこから遷移してきたかを渡して判定するめどがついてきました。 その前に確認したいことがありまして。 私は今のところfront-page.phpしか実行するすべがありません。 page-secound.php、page-third.phpを実行させる方法を教えてください。 それと、以前いただいたheader.phpに、記事をランダム表示するようなコードがあります。 このランダム対象は画像1~画像3に対応していなさそうです。 このランダム表示は必要でしょうか。 と言うのも、header.phpはfront-page.phpよりも先に実行されるため、私が今思いついている方法だけでは、対応できそうになく、ここには別の手段が必要そうです。 なので、ここはとりあえず放置しておきます。

php_learn
質問者

補足

page-secound.php、page-third.phpを実行する方法はメニューバーとバナー画像から考えています。画像にそれぞれのURLリンクを張りそこから誘導させるつもりです。 ※ファイル一覧 https://wandbox.org/permlink/4IZnUnaHoqf1poOi このランダム表示は必要でしょうか。 と言うのも、header.phpはfront-page.phpよりも先に実行されるため、私が今思いついている方法だけでは、対応できそうになく、ここには別の手段が必要そうです。 A.こちらの処理にはカスタムフィールドを設けずにそのまま置いておくことはできないのでしょうか? レイアウトのために設置はしておきたいです。 処理の一部をまとめずに読み込む方法でも構いません。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.70

【コードまとめ その4】 ・ページナビの処理は1つにまとめるのではいけないのでしょうか? そうですね。 以下の$wp_query->found_postsがページによって違ってくるので、なにかしら細工が必要です。 ---- $pages = ceil($wp_query->found_posts / $posts_per_page); ---- これが、archive.php、category.php、search.phpでは、直前にSQLを実行して件数を取得して、$results[0]->countになっています。 ページナビの方が簡単かと思ってお任せしたのですが、確認していたら問題がありました。 ひとつは、ページ番号の件と同じで、archive.php、search.phpで以下のカスタムフィールド問題。 ---- meta.meta_key = 'single_rss_feed1' ---- category.phpはカテゴリーが確定しているので問題なさそうです。 もうひとつは、先に書いた、$wp_query->found_postsです。 これは全投稿件数を取得するもののようです。 つまりカスタムフィールドに対応していません。 ページナビを作った当時はカスタムフィールドを組み込む前だったのでしょう、これでよかったのですが、今は使えそうにありません。 そうなるとここもSQLで取得した件数になってくるので、カスタムフィールド問題と一緒に解決することになりそうです。 ページ番号の件も含めて、まずは、front-page.php、page-secound.php、page-third.phpからarchive.php、category.php、search.phpに遷移した際に、それぞれのカスタムフィールドを渡す方法を考える必要があります。

php_learn
質問者

補足

すべてのテーブルを組み合わせる以外思いつかないですね… 質問とは違う内容になるのですが、ランキングを表示する際に画像の大きさを固定することは可能でしょうか? <?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'post-thumbnail', array(100, 100)); } ?> のようにしてみたのですが、大きさの指定が無視されてしまいます。 ( has_post_thumbnail(100, 100) のようにすると、画像が消えてしまい大きさの指定ができませんでした。 <!-- ▼ 週間ランキング ▼ --> <div class="main-wrap" style="width: 300px;"> <section class="column-inner"> <?php $args = array( 'numberposts' => 10, //表示数 'meta_key' => 'pv_count_month', 'meta_key' => 'single_rss_feed1', 'orderby' => 'meta_value_num', 'order' => 'DESC',); $posts = get_posts($args); if ($posts) : ?> <ul class="parent_box"> <?php foreach( $posts as $post ) : setup_postdata( $post ); ?> <li class="child_box"> <a href="<?php echo get_permalink(); ?>" width: 97px;height: 130px;> <div class="mosaic-backdrop"> <?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'post-thumbnail', array(100, 100)); } ?> </div> <div class="masking"> <span class="masktext"><?php the_title(); ?><span id="likeCount3"></span></span> </div> </a> <div class="info topinfo"> <p> <?php $count = sprintf("%02d",$count); // 一桁を二桁に echo $count + 1; // 01を出力 $count++; ?> </p> </div> <?php echo getPostViewsMonth(get_the_ID()); // 記事閲覧回数表示 */?> <?php endforeach; wp_reset_postdata(); ?> </li> </ul> <?php else : ?> <p>アクセスランキングはまだ集計されていません。</p> <?php endif; ?> </section> </div>

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.69

【コードまとめ その3】 ページ番号のチェックはこれまでと違って難しいです。 その前に解決することがいくつかあるからです。 そのひとつに、共通処理である、archive.php、category.php、search.phpにおいて、RSSのテーブル名が固定されてしまっていること。 ----archive.php、category.php $rss_table_name = get_rss_table_name(1); ----search.php $rss_table_name = get_rss_table_name(2); ---- これはRSSの件数に関係してくるので、先にきちんとしておいた方がいいです。 ついでに、週間カテゴリーランキングのためのカスタムフィールドが固定されていしまっていること。 ----archive.php、category.php、search.php AND meta_value = 'single_rss_feed1' ---- これらの共通処理のファイルは、呼び元が、front-page.phpか、page-secound.phpか、page-third.phpかによって、変動させる必要があるからです。 これらについては、どのようにしていくのがいいか考えてみますので、しばらくお待ちください。 質問者さまがすでにお考えがあったら、教えてくださると助かります。 それはそれとして。 ページリンクもまとめることができますので、そちらを先に質問者さまが考えられてやってみてください。

php_learn
質問者

補足

回答ありがとうございます。テーブルの違う処理はわけて考えるものだと思っておりました。 今のところ対策の検討がつきません… ページナビの処理は1つにまとめるのではいけないのでしょうか? $配列で渡すようなものがなさそうでしたので、1まとめにしましたが… get_post_pages();//共通でわたすもの function get_post_pages(){ $display_pages = 5; //番号を表示したいページ数 $display_page_count = 0; $pages = ceil($wp_query->found_posts / $posts_per_page); for ($i = 1; $i <= $pages; ++$i) { if (1 == $i) { $page_text = '<<'; echo "<a href=\"?page={$i}\">{$page_text}</a> "; if ($current_page > 1) { $j = $current_page - 1; } else { $j = 1; } $page_text = '<'; echo "<a href=\"?page={$j}\">{$page_text}</a> "; } if ($i >= $current_page && ++$display_page_count <= $display_pages) { $page_text = $i; echo "<a href=\"?page={$i}\">{$page_text}</a> "; } if ($i == $pages) { if ($current_page < $pages) { $j = $current_page + 1; } else { $j = $pages; } $page_text = '>'; echo "<a href=\"?page={$j}\">{$page_text}</a> "; $page_text = '>>'; echo "<a href=\"?page={$i}\">{$page_text}</a> "; } } }

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.68

【コードまとめ その2】 ひとつずつ回答します。 ・$categories これもfunctions.phpに移動ですね。 $categoriesを作る関数にしてしまいましょう。 ----functions.php function get_categories_array(){ $categories = []; foreach (get_categories() as $category) { $category->category_link = get_category_link($category->cat_ID); $categories[$category->cat_ID] = $category; } return $categories; } ---- 各ページでは切り取った部分はこうなります。 ---- $categories = get_categories_array(); ----

php_learn
質問者

補足

ありがとうございます。まとめることができました。 ページ番号のチェックはSQLも含まれているのですが、どのようにまとめるべきでしょうか? 2,//ページ番号チェック //ページ番号チェック if (ctype_digit($_REQUEST['page'])) { if (ctype_digit($_REQUEST['page'])) { $current_page = (int) $_REQUEST['page']; $current_page = (int) $_REQUEST['page']; } else { } else { $current_page = 1; $current_page = 1; } } if ($current_page > $wp_query->max_num_pages) { if ($current_page > $wp_query->max_num_pages) { $current_page = $wp_query->max_num_pages; $current_page = $wp_query->max_num_pages; } } if (empty($current_page)) { if (empty($current_page)) { $current_page = 1; $current_page = 1; } } $block_per_page = 2; //ページあたりブロック件数 $block_per_page = 2; //ページあたりブロック件数 $limitSect1 = 5; // タイトルのみの件数 $limitSect1 = 5; // タイトルのみの件数 $limitSect2 = 4; // 画像と画像の下にタイトルの件数 $limitSect2 = 4; // 画像と画像の下にタイトルの件数 $limitSect3 = 4; // 画像と画像の右にタイトルの件数 $limitSect3 = 4; // 画像と画像の右にタイトルの件数 $rss_per_block = $limitSect1 + $limitSect2 + $limitSect3; // ブロックあたりRSS件数 $rss_per_block = $limitSect1 + $limitSect2 + $limitSect3; // ブロックあたりRSS件数 //RSS読み込み //RSS読み込み $rss_per_page = $block_per_page * $rss_per_block; $rss_per_page = $block_per_page * $rss_per_block; $rss_offset = ($current_page - 1) * $rss_per_page; $rss_offset = ($current_page - 1) * $rss_per_page; //※テーブル名の変更 //※テーブル名の変更 $sql = "SELECT * FROM {$rss_table_name} ORDER BY date DESC LIMIT %d,%d"; $sql = "SELECT * FROM {$rss_table_name} ORDER BY date DESC LIMIT %d,%d"; $query = $wpdb->prepare($sql, $rss_offset, $rss_per_page); $query = $wpdb->prepare($sql, $rss_offset, $rss_per_page); //SQL分実行と結果取得 //SQL分実行と結果取得 $rss_items = $wpdb->get_results($query); $rss_items = $wpdb->get_results($query); $group_per_block = 5; //ブロックあたり投稿グループ件数 $group_per_block = 5; //ブロックあたり投稿グループ件数 //投稿読み込み //投稿読み込み $posts_per_group = 1; // 投稿グループあたり投稿件数 $posts_per_group = 1; // 投稿グループあたり投稿件数 $posts_per_page = $block_per_page * $group_per_block * $posts_per_group; // ページあたり投稿件数 $posts_per_page = $block_per_page * $group_per_block * $posts_per_group; // ページあたり投稿件数 $posts_offset = ($current_page - 1) * $posts_per_page; //投稿オフセット $posts_offset = ($current_page - 1) * $posts_per_page; //投稿オフセット

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.67

【コードまとめ その1】 まずは一番簡単なところから。 各ページで関数定義されているset_other_data()をfunctions.phpに移動してみてください。 以下のコードはすべてのページで共通して同じ処理ですので、このまま移動しても問題ありません。 移動と言うと語弊がありますが、functions.phpにコピーして、各ファイルからは削除です。 ---- function set_other_data($post) { 省略 } ---- それだけで実行してみてエラーや表示の不具合がなければいいと思います。 気になるのは、functions.phpでの重複定義です。 以前、functions.phpが複数回読み込まれることがあって、その対応をされたことがあると思います。 もし重複エラーになるようでしたら、他の関数のようにすでに定義されているかのチェックコードで括ってください。 ---- if (!function_exists('set_other_data')) { ここに定義 } ---- すべての関数にこのチェックがないので、なくても大丈夫な気もしますが、以前のエラーがどのような時に起こっていたのか覚えていないので、再現できた方が安心できます。 こんな感じで、他にもまとめられるコードがあれば、functions.phpへ移動していくことになるか、別ファイルにしてrequire_onceで読み込むことになるかと思います。

php_learn
質問者

お礼

以下の2つが共通項なのですが、こちらはすぐに移せますでしょうか? 1,$categories = []; $categories = []; foreach (get_categories() as $category) { foreach (get_categories() as $category) { $category->category_link = get_category_link($category->cat_ID); $category->category_link = get_category_link($category->cat_ID); $categories[$category->cat_ID] = $category; $categories[$category->cat_ID] = $category; } 2,//ページ番号チェック //ページ番号チェック if (ctype_digit($_REQUEST['page'])) { if (ctype_digit($_REQUEST['page'])) { $current_page = (int) $_REQUEST['page']; $current_page = (int) $_REQUEST['page']; } else { } else { $current_page = 1; $current_page = 1; } } if ($current_page > $wp_query->max_num_pages) { if ($current_page > $wp_query->max_num_pages) { $current_page = $wp_query->max_num_pages; $current_page = $wp_query->max_num_pages; } } if (empty($current_page)) { if (empty($current_page)) { $current_page = 1; $current_page = 1; } } $block_per_page = 2; //ページあたりブロック件数 $block_per_page = 2; //ページあたりブロック件数 $limitSect1 = 5; // タイトルのみの件数 $limitSect1 = 5; // タイトルのみの件数 $limitSect2 = 4; // 画像と画像の下にタイトルの件数 $limitSect2 = 4; // 画像と画像の下にタイトルの件数 $limitSect3 = 4; // 画像と画像の右にタイトルの件数 $limitSect3 = 4; // 画像と画像の右にタイトルの件数 $rss_per_block = $limitSect1 + $limitSect2 + $limitSect3; // ブロックあたりRSS件数 $rss_per_block = $limitSect1 + $limitSect2 + $limitSect3; // ブロックあたりRSS件数 //RSS読み込み //RSS読み込み $rss_per_page = $block_per_page * $rss_per_block; $rss_per_page = $block_per_page * $rss_per_block; $rss_offset = ($current_page - 1) * $rss_per_page; $rss_offset = ($current_page - 1) * $rss_per_page; //※テーブル名の変更 //※テーブル名の変更 $sql = "SELECT * FROM {$rss_table_name} ORDER BY date DESC LIMIT %d,%d"; $sql = "SELECT * FROM {$rss_table_name} ORDER BY date DESC LIMIT %d,%d"; $query = $wpdb->prepare($sql, $rss_offset, $rss_per_page); $query = $wpdb->prepare($sql, $rss_offset, $rss_per_page); //SQL分実行と結果取得 //SQL分実行と結果取得 $rss_items = $wpdb->get_results($query); $rss_items = $wpdb->get_results($query); $group_per_block = 5; //ブロックあたり投稿グループ件数 $group_per_block = 5; //ブロックあたり投稿グループ件数 //投稿読み込み //投稿読み込み $posts_per_group = 1; // 投稿グループあたり投稿件数 $posts_per_group = 1; // 投稿グループあたり投稿件数 $posts_per_page = $block_per_page * $group_per_block * $posts_per_group; // ページあたり投稿件数 $posts_per_page = $block_per_page * $group_per_block * $posts_per_group; // ページあたり投稿件数 $posts_offset = ($current_page - 1) * $posts_per_page; //投稿オフセット $posts_offset = ($current_page - 1) * $posts_per_page; //投稿オフセット

php_learn
質問者

補足

【コードまとめ その1】 各ページで関数定義されているset_other_data()をfunctions.phpに移動してみてください。 それだけで実行してみてエラーや表示の不具合がなければいいと思います。 A.まとめてみたところ問題なく動作いたしました。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.66

【アーカイブ その18】 ・自分では全く仕組みを理解できなかったのですが、何が原因だったのでしょうか? 私が想像していた結果と違いました。 私が想像していたのは全部閉じるコードにしても、2021年が開くものでした。 結果がよろしければ、私の想像がはずれて、さらに難しいことを調べる必要がなくなったので、よかったです。 もしかして、もともとのコードはこうだったのではないでしょうか。 これなら全部開いていても納得できます。 ---- if ($y == $this_year) { // 今年だったら $out .= '<li class="year acv_open current">'.$y; } else { // それ以外の年の場合 $out .= '<li class="year acv_open current">'.$y; } ---- 参考サイトのものは今年だけを開いた状態にするものでした。 もし全部閉じた状態がいいのでしたら、前回変更していただいた以下のコードは、 ---- if ($y == $this_year) { // 今年だったら $out .= '<li class="year">'.$y; } else { // それ以外の年の場合 $out .= '<li class="year">'.$y; } ---- この一行にしてください。 ---- $out .= '<li class="year">'.$y; ---- 以下の行も不要です。 ---- $this_year = (string) idate('Y'); // 現在の年を、4桁の文字列で取得 ---- それでと、何が起こったかについて。 クラスにacv_openが付いているものは開いた状態になります。 初期表示からすべてにacv_openが付いていたためすべてが開いていたのだと思います。 初期表示でacv_openを付けないようにしたのですべて閉じた状態になりました。 それで、閉じた状態というのが、私はスタイルシートのことは詳しくないので想像ですが、この部分。 ---- /* acv_openクラスをもたないリスト項目の子リスト(month-archive-list)は、デフォルト非表示に */ ul.archive-list > li:not(.acv_open) > ul { display: none; } ---- ulタグにクラスarchive-listがある、子要素のliタグにクラスacv_openがない、子要素のulタグを非表示にする、という意味合いだと思います。

php_learn
質問者

お礼

現在のファイル構成は下記になります。 この回答が終わり次第、新しく質問を立て直します。 引き続きよろしくお願い致します。 https://wandbox.org/permlink/OwEqJZZdXGziW3lW

php_learn
質問者

補足

【アーカイブ その18】 もしかして、もともとのコードはこうだったのではないでしょうか。 これなら全部開いていても納得できます。 A.もとのこーどは もしかして、もともとのコードはこうだったのではないでしょうか。 これなら全部開いていても納得できます。 A.元のコードは下記のものですね。 if ($y === $this_year) { // 今年だったら $out .= '<li class="year acv_open current">'.$y; } else { // それ以外の年の場合 $out .= '<li class="year current acv_open">'.$y; } 参考サイトのものは今年だけを開いた状態にするものでした。 A.訂正ありがとうございます。 それでと、何が起こったかについて。 クラスにacv_openが付いているものは開いた状態になります。 初期表示からすべてにacv_openが付いていたためすべてが開いていたのだと思います。 初期表示でacv_openをありがとうございます。ありがとうございます。うにしたのですべて閉じた状態になりました。 A.説明ありがとうございます。勉強になりました。 今日からPHPコードをまとめていきたいのですが、RSSは1まとめにしている状態ですので、記事の処理が対象になると考えています。 検索、アーカイブ、固定ページはそれぞれSQLや表示の仕方が異なると思うのですが、どのようにまとめるのでしょうか?

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.65

【アーカイブ その17】 全部閉じられるか試したいのでこれでやってみてください。 ---- if ($y == $this_year) { // 今年だったら $out .= '<li class="year">'.$y; } else { // それ以外の年の場合 $out .= '<li class="year">'.$y; } ---- ・<li>内に<ul>タグがhtml表示されておりました。 そういう構造なので、それで大丈夫です。 参考サイトの「目指すHTMLの構造は、以下の通りです。」のところを確認してみてください。 変更してない箇所のコードは載せないでください。 変わったのか変わってないのかどこが変わったのか確認するのが手間です。

php_learn
質問者

補足

修正ありがとうございます。両方閉じることができました。 変更した部分のみ載せるようにします。申し訳ありません。 自分では全く仕組みを理解できなかったのですが、何が原因だったのでしょうか?勉強のために教えていただけると助かります。 クラス名の間違えやul.archive-list > li.acv_open > ul" $out .= '<ul class="month-archive-list">';の構文が間違っているのではないかとずっと考えていたのですが $out .= '<li class="year">を統一することでどのような事が起こったのか理解できていません…

関連するQ&A

  • WordPressの固定ページの要素が反映されない

    WordPressの固定ページのタイトル、サイドバー、アイキャッチ画像などが表示されません。 「FeedWordPress」というプラグインを使ってRSSフィードを読み込んで他人様の投稿を表示させるページを作っています。いわゆるアンテナサイトです。 まず、固定ページを作りました。そしてその固定ページに自動で集めた他人様の投稿を表示させるようにしました。しかし何かが干渉しているのか、固定ページのタイトルが出てきません。イメージとしましては、 ------------------------------ ○○アンテナ ←←←固定ページのタイトルなどが出てきません ・RSSフィード読み込み記事1 ・RSSフィード読み込み記事2 ・RSSフィード読み込み記事3 ・RSSフィード読み込み記事4 ------------------------------ また、同時に固定ページの編集のところでサイドバーを指定したりアイキャッチ画像を入れたりしているのですが、どちら出ません。 変な表現ですが、固定ページの要素全てががFeedWordPressに負けてしまっている状態のようです。ちなみにRSSフィードで集めた投稿は画像やタイトルや本文ともにきれいに表示されています。Googleなどで三日三晩調べても解決に至りませんでした。また管理者ページの[外観]→[カスタマイズ]もとことん隅から隅まで確認しましたが解決できませんでした。 稚拙な表現ですが、どなたかご教授お願い致します。

  • WordPressについての質問です

    wordpressを始めました。 投稿記事のタイトルの下にある日付と投稿者にそれぞれブログ記事へのリンクが貼られますが、 このリンクを解除することは可能でしょうか?

  • WordPressの質問(q10032703)の続

    該当コードからmeta_keyに当てはまる記事を出力したいが、記事が何も表示されない。 function set_template_info() { global $tn; global $tk; global $rss_table_name; global $current_page; $tn = get_template_number(); $tk = get_template_key($tn); $rss_table_name = get_rss_table_name($tn); $current_page = get_current_page(); } function get_template_number() { global $template; $template_number = $_GET['tn']; switch ($template_number) { case '2': break; case '3': break; default: switch (pathinfo($template, PATHINFO_FILENAME)) { case 'page-secound': $template_number = 2; break; case 'page-third': $template_number = 3; break; default: $template_number = 1; } } return $template_number; } function get_template_key($template_number) { if (1 == $template_number) { $template_key = 'single_rss_feed1'; } elseif (2 == $template_number) { $template_key = 'double_rss_feed2'; } elseif (3 == $template_number) { $template_key = 'triple_rss_feed3'; } return $template_key;

    • ベストアンサー
    • PHP
  • wordpressのリンクについて質問があります。

    wordpress初心者です。 wordpressで相互リンクを管理するHPの管理画面を作成したいのですが よくわかりません・・・ いろいろ調べてみたのですが、 wordpressにログイン後管理ページのダッシュボードにて 「リンクからリンク集の作成ができる」と調べていたらわかったのですが、 そもそもログイン後からダッシュボードを見ても「リンク」がありません。 上からダッシュボード、投稿、メディア、固定ページ、コメント、外観、 プラグイン、ユーザー、ツール、設定と順番に並んでいます。 初期設定を2,3回しましたが解決できませんでした・・・ リンク集を作成したいのでダッシュボードの「リンク」を表示する方法を 知っていいる方は教えて頂けませんか? よろしくお願いします。

    • 締切済み
    • PHP
  • FC2 ブログ 記事をカスタマイズしたいです

    FC2ブログ始めました。 テンプレは3カラムを使用してます。 真ん中にコメント記事がでますが、その記事上部にフリーエリアを作り、そこに広告バナーを固定してます。 ページが変わっても、フリーエリアはそのまま一番上です。 で、その広告を囲んだり、詳細を記載したいのですが、ググってもわかりませんでした。 言葉では、分かりづらいと思いますので、画像を添付しました。 画像のように、幾つもの広告バナーを一つ一つ枠で囲み、詳細を下に記載したいと思います。 どこかに無料テンプレートを配布してるサイトとか、説明してるサイトがありましたら教えてください。

  • WordPress3での投稿記事一覧

    WordPress3の勉強を始めました。 インストールして、最初のページで、 「Hello world!」となり、 投稿記事 の一覧になります。 トップページで、 投稿記事 の一覧 を削除する方法がわかりません。 WordPress3の管理画面を見ても、該当する部分がわかりません。 ちなみに、 トップページは、サイドバーのウィジェットを使うだけで、 インストールした時に、投稿記事になっていた部分は、 画像などにしたいと思っております。 投稿記事は、トップページからリンクを張り、 2ページめにしようと思っております。 よろしくお願いします。

  • wordpressの予約投稿の日付とRSSの日付

    wordpress4.3.1を使用しています。 予約投稿をしたのですが、wordressの投稿のRSSでは日付が予約投稿をした日付ではなく、記事を入力した日付で取得されてしまいました。外部サイトへRSSのfeedを読み込んで記事タイトルと日付を表示させる都合上、日付は予約投稿した日でも表示させたいと思います。 (現状は添付画像ご確認よろしくお願いいたします。) どうすればよろしいでしょうか。よろしくお願いいたします。

    • 締切済み
    • CSS
  • WordPressの質問(q10006002)の続

    前後の記事のコメント欄を標示する方法がわかりません。 <?php $team = get_post_meta($post->ID, 'team', true);//赤、青、緑のチームに分ける // 投稿オブジェクトの取得 if ('red' === $team) { $post_red = $post; // 赤(現在) $post_blue = get_adjacent_post(true, '', false); // 青(現在の次) $post = $post_blue; // 現在を青に置きかえる $post_green = get_adjacent_post(true, '', false); // 緑(現在の次:青の次) $post = $post_red; // 現在を赤に戻す } elseif ('blue' === $team) { $post_blue = $post; // 青(現在) $post_red = get_adjacent_post(true, '', true); // 赤(現在の前) $post_green = get_adjacent_post(true, '', false); // 緑(現在の次) } elseif ('green' === $team) { $post_green = $post; // 緑(現在) $post_blue = get_adjacent_post(true, '', true); // 青(現在の前) $post = $post_blue; // 現在を青に置きかえる $post_red = get_adjacent_post(true, '', true); // 赤(現在の前:青の前) $post = $post_green; // 現在を緑に戻す } /*$post_thumbnail_id = get_post_thumbnail_id($post);//画像の投稿データから画像IDを取得する ※おそらくいらない */ $red_post_thumbnail_id = get_post_thumbnail_id($post_red);//赤、青、緑の投稿データから前後の画像IDを取得する $blue_post_thumbnail_id = get_post_thumbnail_id($post_blue); $green_post_thumbnail_id = get_post_thumbnail_id($post_green); $red_post_image_src = wp_get_attachment_image_src($red_post_thumbnail_id);//赤、青、緑の投稿データから前後の画像URLを取得する $blue_post_image_src = wp_get_attachment_image_src($blue_post_thumbnail_id); $green_post_image_src = wp_get_attachment_image_src($green_post_thumbnail_id); /*$post_id = post_id ($post_red,$post_blue,$post_green);*/ ※$argsで設定済みなので多分必要ない // コメントオブジェクトの取得 $args = [ 'author__not_in' => '1', // 管理者を除く 'status' => 'approve', // 承認済み 'type' => 'comment', // コメント ]; $args['post_id'] = $post_red->ID; // 赤のID $comments_red = get_comments($args); // 赤のコメント $args['post_id'] = $post_blue->ID; // 青のID $comments_blue = get_comments($args); // 青のコメント $args['post_id'] = $post_green->ID; // 緑のID $comments_green = get_comments($args); // 緑のコメント // コメントの表示 if (empty($comments_red)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_red as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; } if (empty($comments_blue)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_blue as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; } if (empty($comments_green)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_green as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; }

    • ベストアンサー
    • PHP
  • WordPressについて

    WordPressに関する質問です。 サイトにプロフィールを掲載しようと思い、 プロフィールを固定ページとして投稿しました。 固定ページを投稿する際にパーマリンクが http://・・・・・/プロフィール となっていましたが 公開した固定ページのURLを見てみると http://・・・・・/2%5#36% というような数字の羅列したURLになっていました。 URL設定自体は数字ベースに設定しているので 数字ベースのURLになったと思うのですが、 パーマリンクとURLというのは違うものなのでしょうか。 wordpressを使い始めてまだ間もないので この類の詳しいことまで教えていただけるとうれしいです。 よろしくお願いします。 ※OKWaveより補足:「富士通FMV」についての質問です。

  • ワードプレス(WordPress) RSS magpierss 日付

    ワードプレス(WordPress)のRSSを、他のサイトで取得するため にmagpierssを入れてるのですが、日付がうまく取得(表示) できません・・。教えてください・・。 ◆ワードプレス側のRSSは、固定カテゴリーです。 アドレス?feed=rss2&cat=3 ◆magpierss では、ブログタイトルは取得しないので 記事のタイトルと、日時だけ取得したいと想っています。 前略・・ $count = 1; // ↓ブログタイトル↓ // echo "<h2>$title</h2>\n"; //echo "<dl>\n"; // ↓記事6個まで↓ foreach ($rss->items as $item ) { if($count < 6){ $count++; // 記事のタイトル $title = $item['title']; // 表示する文字数を制限する 10文字 $title = mb_strimwidth($title, 0, 50, "...", "UTF-8"); //$title = mb_convert_encoding($title, "UTF-8", "auto");   記事の要約   $desc = $item['description'];  $desc = $item['summary'];   $desc = mb_convert_encoding($desc, "UTF-8", "auto"); // 記事のURL $url = $item['link']; // 記事の投稿日時 2005/09/20/10:30:00形式 $date = $item['dc']['date']; $time = rtrim("$date","\+09:00"); $time = strTr("$time","T-","//"); // 記事の投稿日時 09/20形式 $date2 = substr($item['dc']['date'],5,5); $time2 = strTr("$date2","T-","//"); // 記事の投稿日時 10:30形式 $time3 = date( 'H:i', strtotime( substr( $item['dc']['date'],11,8 ) ) ); // 出力形式選択 echo " <ul> <li> <a href=\"$url \">$title</a>$time</li> </ul>"; } } // 出力形式選択↑ループ ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう