質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

911閲覧

特定カテゴリで出力した月別アーカイブのリストにリンクを付けたい

Hiduki723

総合スコア9

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/09/06 12:52

編集2018/09/12 00:53

wordpressでブログを運営しています。
1からコーディングしたカスタムテーマを使用中です。

ブログサイドバーに、特定カテゴリのみの月別アーカイブリストを作りました。
こちらのサイトを参考にしました。

コードは、function.phpに下記です。(上記サイト様よりコピペ)

add_filter('getarchives_where', 'custom_archives_where', 10, 2); add_filter('getarchives_join', 'custom_archives_join', 10, 2); function custom_archives_join($x, $r) { global $wpdb; $cat_ID = $r['cat']; if (isset($cat_ID)) { return $x . " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)"; } else { return $x; } } function custom_archives_where($x, $r) { global $wpdb; $cat_ID = $r['cat']; if (isset($cat_ID)) { return $x . " AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id IN ($cat_ID)"; } else { $x; } } function wp_get_cat_archives($opts, $cat) { $args = wp_parse_args($opts, array('echo' => '1')); // default echo is 1. $echo = $args['echo'] != '0'; // remember the original echo flag. $args['echo'] = 0; $args['cat'] = $cat; $tag = ($args['format'] === 'option') ? 'option' : 'li'; $archives = wp_get_archives(build_query($args)); $archs = explode('</'.$tag.'>', $archives); $links = array(); foreach ($archs as $archive) { $link = preg_replace("/='([^']+)'/", "='$1?cat={$cat}'", $archive); array_push($links, $link); } $result = implode('</'.$tag.'>', $links); if ($echo) { echo $result; } else { return $result; } }

出力は

<ul> <?php wp_get_cat_archives('type=monthly&format=option&show_post_count=1', 2); ?> </ul>

ですが、これだと、アーカイブは表示できてもリンクが付きません。

追記:
日付アーカイブへのリンクを生成するには、以下のようなコードで合っているでしょうか。
合っているならば、これをfunction.phpに入れるには、上記のどの行へ挿入したらいいのでしょうか。

<?php $year = get_the_date( 'Y' ); $month = get_the_date( 'm' ); ?> <a href="<?php echo get_month_link( $year, $month ); ?>"> <?php echo get_the_date(); ?> </a>

手探りで追加しようとしてもエラーしてしまうため、困っています。
別の方法といっても、発想力が乏しく、検索にも疲れてきました。
お知恵を拝借できますでしょうか。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。

function.phpに書いたコピペコードの一部を以下のように書き換えました。

function wp_get_cat_archives($opts, $cat) { $args = wp_parse_args($opts, array('echo' => '1')); $echo = $args['echo'] != '0'; $args['echo'] = 0; $args['cat'] = $cat; $tag = array('li'); $archives = wp_get_archives(build_query($args)); $archs = explode('</'.$tag.'>', $archives); $links = array( ); foreach ($archs as $archive) { $link = preg_replace("/='([^']+)'/", "='$1?cat={$cat}'", $archive); array_push($links, $link); }

特にポイントだったのは、「$tag」の部分かと思います。

出力コードは、「format=option&」を削除して以下の通りです。

<?php wp_get_cat_archives('type=monthly&show_post_count=1', 5); ?>

無事、リンク付きリストが表示されました。

まだ「March2016」というデフォルトのスタイルなので、これを「2016年3月」となるよう、改良したいと思います。

閲覧ありがとうございました。

投稿2018/09/12 11:56

Hiduki723

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問