web-dev-qa-db-ja.com

RSSウィジェットのタイトルリンクを削除する

私はRSSフィードウィジェットからリンクとアイコンを削除しようとしています。それができる方法はありますか?明らかに私はコアファイルを変更したくありません。

そのため、望ましい出力は次のとおりです。

<h3 class="widget-title">RSS Title</h3>

デフォルトの代わりに:

<h3 class="widget-title">
<a href="http://www.example.com/url/feed/" class="rsswidget">
    <img height="14" width="14" alt="RSS" src="http://example.com/wp-includes/images/rss.png" style="border:0" class="rss-widget-icon"></a> <a href="http://www.example.com/" class="rsswidget">RSS Title</a>

Widget_titleフィルタがあることはわかっていますが、機能させることはできません。

コード例は評価されるでしょう。

詳細

それで/wp-includes/widgets/class-wp-widget-rss.phpにこのコードがあります

/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
        $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );

        $url = strip_tags( $url );
        $icon = includes_url( 'images/rss.png' );
        if ( $title )
            $title = '<a class="rsswidget" href="' . esc_url( $url ) . '"><img class="rss-widget-icon" style="border:0" width="14" height="14" src="' . esc_url( $icon ) . '" alt="RSS" /></a> <a class="rsswidget" href="' . esc_url( $link ) . '">'. esc_html( $title ) . '</a>';

        echo $args['before_widget'];
        if ( $title ) {
            echo $args['before_title'] . $title . $args['after_title'];
        }
        wp_widget_rss_output( $rss, $instance );
        echo $args['after_widget'];

        if ( ! is_wp_error($rss) )
            $rss->__destruct();
        unset($rss);

そしてそこにフィルタがあるのを見ます、しかしそれを使ってリンクとアイコンを削除する方法がわかりません。

1
Ross

組み込みウィジェットを変更しようとしています。残念ながら、あなたが望む結果を得る簡単な解決策はありません。あなたがすでに考え出したように、タイトル出力全体を修正するためのフィルタフックはありません。

結果を取得する方法

  1. あなたが指定したメソッドで両親のメソッドwidgetを上書きするWP_Widget_RSSを拡張するあなた自身のウィジェットを作成してください。それからあなたのものと作り付け版を取り替えなさい。

    あなたが始められるようにいくつかの助け:

    class WP_Widget_RSS_Custom extend WP_Widget_RSS {
        public function widget($args, $instance) {
            // Copy parent function and modify to your needs…
        }
    }
    
    add_action('widgets_init', 'widget_WP_Widget_RSS_Custom_init');
    
    function widget_WP_Widget_RSS_Custom_init() {
        unregister_widget('WP_Widget_RSS');
        register_widget('WP_Widget_RSS_Custom');
    }
    
  2. DOMの準備ができた後にウィジェットを変更するJSベースのソリューションを作成します。

2
iantsch