[AUTOMATIQUE] Cet article a plus de 5 ans.
Il se peut donc que les informations qu'il fournit ne soient plus totalement exactes.

J’ai cédé les droits de ce plugin (Avril 2016). Merci de suivre les liens ci-dessous pour vous rendre sur la documentation officielle.

Présentation du plugin   Documentation

logo

 

FEEDZY RSS Feeds met à disposition des hooks  (see Function Reference/apply filters) depuis la version 1.7 pour vous permettre de customiser le plugin selon vos besoins.

Hooks disponibles

  • filtre : feedzy_feed_items
  • filtre : feedzy_item_keyword
  • filtre : feedzy_thumb_output
  • filtre: feedzy_title_output
  • filtre : feedzy_meta_args
  • filtre : feedzy_meta_output
  • filtre: feedzy_summary_input
  • filtre : feedzy_summary_output
  • filtre : feedzy_global_output
  • filtre : feedzy_thumb_sizes
  • filtre : feedzy_feed_blacklist_images
  • filtre : feedzy_default_image
  • filtre : feedzy_default_error
  • filtre : shortcode_atts_feedzy_default
  • filtre natif: wp_feed_cache_transient_lifetime

Note: l’argument $feedURL (variable qui contient l’URL du flux affiché) est disponible pour tous les hooks, mais est toujours optionnelle. Utilisez là pour des tweaks plus ciblés.

Exemples

Supprimer les liens

Voici une fonction assez simple basée sur les REGEX qui permet de supprimer les liens mais de garder leur contenu :

function bweb_feedzy_remove_link_matches( $matches ) {
	return $matches[2];
}
function bweb_feedzy_remove_link( $content, $feedURL ) {
	$pattern= '/<a.*href=\"(https?:\/\/.*)\".*>(.*)<\/a>/iU';
	$content= preg_replace_callback( $pattern, 'bweb_feedzy_remove_link_matches', $content );
	return $content;
}

 

Nous allons maintenant utiliser cette fonction avec les hooks de Feedzy :

//Supprimer le lien de la miniature
add_filter( 'feedzy_thumb_output', 'bweb_feedzy_remove_link', 9, 2 );

//Supprimer le lien du titre
add_filter( 'feedzy_title_output', 'bweb_feedzy_remove_link', 9, 2 );

//Supprimer le lien de l'auteur
add_filter( 'feedzy_meta_output', 'bweb_feedzy_remove_link', 9, 2 );

//Supprimer tous les liens à la fois
add_filter( 'feedzy_global_output', 'bweb_feedzy_remove_link', 9, 2 );

Ne pas supprimer les éléments HTML de la description et/ou utiliser le contenu de l’élément plutôt que son résumé

function bweb_summary_input( $description, $content, $feedURL ) {
	//Si vous voulez utiliser le contenu de l'élément au lieu de sa description. Supprimer la ligne sinon
	//Si le flux n'a pas de meta 'content', la variable $content est déjà égale à $description
	$description = $content;
	
	//La list des flux dont vous voulez garder les éléments HTML
	$feedList = array (
		'http://www.gumdust.com/feed',
		'https://www.b-website.com/feed'
		);
	
	//Supprime les élément HTML (comme dans le hook par défaut) si l'élément n'est pas dans la liste
	if( !in_array( $feedURL, $feedList ) ) {
		$description = trim( strip_tags( $description ) );
	}
	
	//Supprime le hellip (comme dans le hook par défaut) 
	//Gardez en mémoire qu'il sera rajouté plus tard lors du rendu général
	$description = trim( chop( $description, '[&hellip;]' ) );
 
	return $description;
}
remove_filter( 'feedzy_summary_input', 'feedzy_summary_input_filter', 9 );
add_filter( 'feedzy_summary_input', 'bweb_summary_input', 10, 3 );

 Supprimer les 3 petis points de la fin (hellip)

function bweb_feedzy_remove_hellip( $content, $feedURL ) {
    $content = str_replace(' […]', '', $content);
    return $content;
}
add_filter( 'feedzy_summary_output', 'bweb_feedzy_remove_hellip', 9, 2 );

 Ajouter un lien lire la suite

function bweb_feedzy_readmore( $content, $link, $feedURL ) {
	$content = str_replace( '[…]', '<a href="' . $link . '" target="_blank">' . __('Read more', 'yourTextDomain') . ' &rarr;</a>', $content );
	return $content;
}
add_filter( 'feedzy_summary_output', 'bweb_feedzy_readmore', 9, 2 );

Pour utiliser votre propre style et ne pas charger le style par défaut du plugin

function bweb_feedzy_remove_style( $content, $feedURL ) {
	global $feedzyStyle;	
	
	//La feuille de style du plugin est chargée quand cette variable globale est sur TRUE
	$feedzyStyle = FALSE;

	return $content;
}
add_filter( 'feedzy_global_output', 'bweb_feedzy_remove_style', 9, 2 );

Vous devez bien évidemment mettre votre style dans propre fichier CSS.

Pour utiliser du style inline et ne pas charger le style par défaut du plugin

function bweb_feedzy_custom_style( $content, $feedURL ) {
	global $feedzyStyle, $feedzyStyleCustom;	
	
	//Evite de charger la feuille de style du plugin
	$feedzyStyle = FALSE;

	//Nouvelle variable globale pour éviter de printer plusieurs fois le style inline
	if( !isset( $feedzyStyleCustom ) )
	$feedzyStyleCustom = FALSE;
    
	$customStyle = '
		<style>
			.feedzy-rss .rss_item {
				border-bottom: 1px solid #eee;
			}
			.feedzy-rss .rss_item .title {
				font-weight: bold;
			}
			.feedzy-rss .rss_item:after{
				content:"";
				display:block;
				clear: both;
			}
			.feedzy-rss .rss_item .rss_image {
				float: left;
				text-decoration: none;
				border: none;
			}
			.feedzy-rss .rss_item .rss_image span{
				display:inline-block;
				background-size: cover;
				background-position: 50%;
			}
			.feedzy-rss .rss_item .rss_image {
				margin: 0.3em 1em 0 0;
			}
			.feedzy-rss .rss_item .rss_content small {
				display: block;
				font-size: 0.9em;
				font-style:italic;
			}
		</style>';
		
	if( ! $feedzyStyleCustom )
	$content = $customStyle . $content;
	
	$feedzyStyleCustom = TRUE;

	return $content;
}
add_filter( 'feedzy_global_output', 'bweb_feedzy_custom_style', 9, 2 );

Pour afficher les flux dans un block horizontal (avec scrollbar)

function bweb_horizontal_layout( $content, $feedURL ) {
    return '<div class="feedzy-horizontal">' . $content . '</div>';
}
add_filter( 'feedzy_global_output', 'bweb_horizontal_layout', 9, 2 );
.feedzy-horizontal {
	overflow-y: hidden;
	overflow-x: scroll;
	width: 100%;
}
.feedzy-horizontal .feedzy-rss {
	display: table;
	border-spacing: 15px 0;
	table-layout: fixed;
	width: 100%;
}
.feedzy-horizontal .feedzy-rss .rss_item {
	border-bottom: 1px solid #eee;
	width: 300px;
	display: table-cell;
}

Changer la durée de vie du cache des flux

function bweb_feedzy_cache_duration( $feedCacheDuration, $feedURL ) {
	if( 'https://www.b-website.com/feed' == $feedURL )
		return 60*5; //5 minutes

	return $feedCacheDuration;
}
add_filter( 'wp_feed_cache_transient_lifetime', 'bweb_feedzy_cache_duration', 10, 2 );

Decoder le titre de l’élément avec HTML Entities

function bweb_title_html_entity( $content ) {
	return html_entity_decode( $content );
}
add_filter( 'feedzy_title_output', 'bweb_title_html_entity', 9 );

Manipuler les metas d’un flux

Par défaut, la ligne des metas (nom de l’auteur et date de publication) sont affichés grâce à un liste d’arguments :

$metaArgs = array(
	'author' => true,
	'date' => true,
	'date_format' => get_option( 'date_format' ),
	'time_format' => get_option( 'time_format' )
);

Vous pouvez changer ces arguments grâce au hook feedzy_meta_args et afficher seulement le nom de l’auteur ou la date, choisir le format de la date et de l’heure.

function bweb_feedzy_meta_args($metaArgs, $feedURL){
	if( 'https://www.b-website.com/feed' == $feedURL ) {
		$metaArgs = array(
					'author' => false,
					'date' => true,
					'date_format' => 'j F Y',
					'time_format' => 'G \h i'
				);
	}
	return $metaArgs;
}
add_filter('feedzy_meta_args', 'bweb_feedzy_meta_args', 9, 2); 

Ou plus simple si vous ne voulez changer qu’un seul paramètre. Ici on cache le nom de l’auteur pour tous les flux.

function bweb_feedzy_meta_hide_author($metaArgs, $feedURL){
	$metaArgs['author'] = false;
	return $metaArgs;
}
add_filter('feedzy_meta_args', 'bweb_feedzy_meta_hide_author', 9, 2); 

Afficher un élément seulement si son contenu contient l’un des mots clés spécifiés

function bweb_feedzy_feed_item_keywords_content( $continue, $keywords_title, $item, $feedURL ){
	if( 'https://www.b-website.com/feed' == $feedURL ) {
		$continue = false;
		$keywords_content = array( 'keyword', 'KEYWORD' );
		foreach ( $keywords_content as $keyword ) {
			if ( strpos( $item->get_description(), $keyword ) !== false ) {
				$continue = true;
			}
		}
	}
	return $continue;
}
add_filter('feedzy_item_keyword', 'bweb_feedzy_feed_item_keywords_content', 9, 4); 

Afficher les élements dans un ordre aléatoire

function feedzy_feed_items_ramdom( $items, $feedURL ){
	if( 'https://www.b-website.com/feed' == $feedURL ) {
		shuffle ( $items );
	}
	return $items;
}
add_filter('feedzy_feed_items', 'feedzy_feed_items_ramdom', 9, 2); 

Changer la taille et le ratio des miniatures

function bweb_feedzy_thumb_aspect_ratio( $sizes, $feedURL ) {
	$sizes = array( 
		'width' => $sizes['width'] * (16/9), 
		'height' => $sizes['height']
	);
    return $sizes;
}
add_filter( 'feedzy_thumb_sizes', 'bweb_feedzy_thumb_aspect_ratio', 10, 2 );

Editer la list des images blacklistées pour éviter de remonter les émoticônes par exemple

function bweb_feedzy_blacklist_images( $blacklist ) {
	$blacklist[] = 'xxxx';
	return $blacklist;
}
add_filter( 'feedzy_feed_blacklist_images', 'bweb_feedzy_blacklist_images' );

Changer les paramètre par défaut du shortcode de feedzy>

function bweb_default_feedzy_shortcode( $out, $pairs, $atts ) {
	$out['max'] = '2';
	$out['maxfeed_title'] = 'no';
	$out['thumb'] = 'auto';
	return $out;
}
add_filter( 'shortcode_atts_feedzy_default', 'bweb_default_feedzy_shortcode', 10, 3 );

Vous avez des questions ? Des suggestions ? N’hésitez pas !

 

Article rédigé parBrice CAPOBIANCO

Autodidacte passionné par WordPress. J'aime apprendre et créer pour ensuite partager !

Coorganisateur des Meetups WordPress Rennes et fondateur de bweb.
Partager cet article

Les commentaires sont fermés.

Afficher les 4 commentaires

4 commentaires

  1. Bonjour Brice,

    D’abord merci pour ce super plugin. Il répond parfaitement a ce que je souhaitais ! 🙂
    En revanche, je ne comprends pas où dois je mettre ces fameux  » hook  » et bouts de code ci-dessus afin de customiser mon plugin..

    est ce dans le functions.php du thème ou dans le feedzy-rss-feeds-functions.php ?… ou autre part ^^ ?

    Merci par avance de ta réponse,

    • Hello Quentin,
      Il ne faut JAMAIS toucher à un plugin, toujours ajouter les hooks et autre fonctions customs dans ton fichier functions.php (celui d’un thème enfant de préférence).
      A bientôt,

  2. Bonsoir,

    Je viens de découvrir ce plugin et je pense qu’il va bien me servir 🙂

    Je fais actuellement quelques essais et j’essaye de modifier la durée de vie du cache. Mais si j’ajoute le code indiqué plus haut, dans le functions.php de mon thème, je me retrouve avec une page blanche. Le résultat est le même que ce code soit ajouté dans le fichier du thème ou dans celui du thème enfant. Une idée ?

    Autre question, est-il possible que le contenu des Flux affiché sur une page soit publié de manière automatique sur Twitter et/ou Facebook ?

    Merci 🙂

    • Bonjour Laurent,
      Il s’agit d’une erreur PHP, donc balise mal ouverte/fermée… je ne sais pas trop n’ayant pas le code sous les yeux.
      Et pour répondre à ton autre question, non ça n’est pas possible de partager automatiquement sur les RS, du moins pas avec Feedzy.
      Bonne journée.