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

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

ただいまの
回答率

88.61%

WordPress Widget ドロップダウン時のタグのリンク先を修正したい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 490

xu0124

score 26

function.phpに追記して
WordPress標準のカテゴリーウィジェットを拡張してカスタムタクソノミーも選択できるようにしたのですが

タグ(post_tag)設定でドロップダウン表示にすると

https://2inc.org/?cat=172

という感じ担ってエラーになります。
※catはガテゴリー
※172はタグのID

本来であればタグの場合は

https://2inc.org/?tag=タグ名

というURLになるかと思います。

今の所どのようにコードを修正したらタグのリンクが正常になるのかわかりません。
もしわかる方がいましたらご教授願います。

<追記>
海外サイトも同様の質問があったので、参考にしてますがコード置き換えても現在のバージョンだとウィジェットとして使えなくなってそうです。
https://stackoverflow.com/questions/36654933/wordpress-category-widget-drop-down-slugs

コード引用先

function override_widget_categories() {
    class WP_Widget_Categories_Taxonomy extends WP_Widget_Categories {
        private $taxonomy = 'category';

        public function widget( $args, $instance ) {
            if ( !empty( $instance['taxonomy'] ) ) {
                $this->taxonomy = $instance['taxonomy'];
            }

            add_filter( 'widget_categories_dropdown_args', array( $this, 'add_taxonomy_dropdown_args' ), 10 );
            add_filter( 'widget_categories_args', array( $this, 'add_taxonomy_dropdown_args' ), 10 );
            parent::widget( $args, $instance );
        }

        public function update( $new_instance, $old_instance ) {
            $instance = parent::update( $new_instance, $old_instance );
            $taxonomies = $this->get_taxonomies();
            $instance['taxonomy'] = 'category';
            if ( in_array( $new_instance['taxonomy'], $taxonomies ) ) {
                $instance['taxonomy'] = $new_instance['taxonomy'];
            }
            return $instance;
        }

        public function form( $instance ) {
            parent::form( $instance );
            $taxonomy = 'category';
            if ( !empty( $instance['taxonomy'] ) ) {
                $taxonomy = $instance['taxonomy'];
            }
            $taxonomies = $this->get_taxonomies();
            ?>
            <p>
                <label for="<?php echo $this->get_field_id( 'taxonomy' ); ?>"><?php _e( 'Taxonomy:' ); ?></label><br />
                <select id="<?php echo $this->get_field_id( 'taxonomy' ); ?>" name="<?php echo $this->get_field_name( 'taxonomy' ); ?>">
                    <?php foreach ( $taxonomies as $value ) : ?>
                    <option value="<?php echo esc_attr( $value ); ?>"<?php selected( $taxonomy, $value ); ?>><?php echo esc_attr( $value ); ?></option>
                    <?php endforeach; ?>
                </select>
            </p>
            <?php
        }

        public function add_taxonomy_dropdown_args( $cat_args ) {
            $cat_args['taxonomy'] = $this->taxonomy;
            return $cat_args;
        }

        private function get_taxonomies() {
            $taxonomies = get_taxonomies( array(
                'public' => true,
            ) );
            return $taxonomies;
        }
    }
    unregister_widget( 'WP_Widget_Categories' );
    register_widget( 'WP_Widget_Categories_Taxonomy' );
}
add_action( 'widgets_init', 'override_widget_categories' );
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2020/01/13 20:09

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

checkベストアンサー

+3

無理にカスタマイズしなくてもプラグインを利用するのが得策でしょう。
Taxonomy Dropdown Widget
古い記事を参考にするよりキチンとメンテされているプラグインを有難く使わせてもらってくださいな。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ここでは?

// private $taxonomy = 'category';
   private $taxonomy = 'post_tag';

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/13 17:55 編集

    WPが壊れました...。
    >サイトに重大なエラーがありました。と表示されなくなりました。

    キャンセル

  • キャンセル

  • 2020/01/13 19:40

    Teratailのガイドラインを見る限り、推奨はしていませんが禁止はされていません。
    フォーラムが反応なさそうなので投稿しました。

    上記のコードに変更した際にWPにアクセスすると画面が真っ白になっているので、そう表現しました。

    キャンセル

  • 2020/01/14 18:02

    反応がないって、質問してからせいぜい1日か2日程度ですよね。
    法律違反じゃなければ何してもいい?
    マルチポスト禁止と書いてあるならマルチポストしない?
    問題解決のために時間を割いて考えてくれている人がいたとしたらどう思いますかね。
    どちらのサイトも回答は義務ではありません。ただのボランティアです。
    その気持ちを蔑ろにするような行為はどうかと思いますね。

    キャンセル

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

  • ただいまの回答率 88.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る