web-dev-qa-db-fra.com

Supprimer le lien du titre du widget rss

Je cherche à supprimer le lien et l'icône du widget de flux RSS. Y a-t-il un moyen de le faire? Évidemment, je ne veux pas modifier les fichiers de base.

La sortie souhaitée est donc:

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

Au lieu de la valeur par défaut:

<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>

Je sais qu'il existe un filtre widget_title, mais je ne parviens pas à le faire fonctionner.

Des exemples de code seraient appréciés.

Plus de détails

Donc, il y a ce code dans /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);

Et je vois qu’il existe un filtre, mais je ne sais pas comment l’utiliser pour supprimer le lien et l’icône.

1
Ross

Vous essayez de modifier un widget intégré. Malheureusement pour vous, il n’existe pas de solution simple pour obtenir les résultats souhaités. Comme vous l'avez déjà compris, il n'y a pas de crochet de filtre pour modifier la sortie du titre entier.

Comment obtenir les résultats?

  1. Créez votre propre widget en étendant WP_Widget_RSS où vous écrasez la méthode par les parents widget avec votre méthode désignée. Puis remplacez la version intégrée par la vôtre.

    Un peu d’aide pour vous aider à démarrer:

    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. Créez une solution basée sur JS, qui modifie le widget une fois que DOM est prêt.

2
iantsch