Favicon BulgaWeb

Pods Tips and Tricks

Mis à jour le mercredi 7 octobre 2020
Temps approximatif de lecture : 5 minutes

Suite à mon article sur l'utilisation globale de Pods avec Oxygen, je rajoute quelques astuces utiles ...

Ouvrir (télécharger) un pdf avec un bouton

En premier nous devrons créer un champ "fichier" et dans ce cas le restreindre au format PDF.

Ayant essayé de récupérer le lien du fichier dans le bouton, je me suis aperçu que je récupérais un tableau. En regardant de plus près, je devais récupérer le ["guid"] qui contient le lien du fichier. Je me suis donc inspiré de l'article de Mohammed Wasim Akram et des codes de Kevin Pauls and Matt Hias membres du groupe anglophone pour créer cette fonction :

function oxychild_pdf($field_name) {
			$mypod = pods( $post->post_type, $post->ID );	  
			$pop = $mypod->field($field_name);
			return $pop["guid"];
		}

Une fois avoir insérer cette fonction dans un plug-in, code snippets ou équivalant, vous pouvez récupérer le lien en utilisant le retour d'une fonction (nom de la fonction en premier et nom du champ ensuite) comme ceci :

Maintenant tout ça est bien sympa, mais j'aimerais que l'utilisateur puisse télécharger directement le fichier. Nous allons donc le faire en deux étapes, la première sera de rajouter la classe .download-button (ou toute autre à votre choix pour autant qu'elle corresponde dans le script) et rajouter ce script pour forcer le téléchargement :

jQuery(document).ready(function() {
  var downloadButton = jQuery('.download-button');
     
  downloadButton.each(function(index) {
    jQuery(this).attr('download', '');
  });
});

Utilisation des templates Pods

Par défaut, avec un thème classique WordPress, Pods permet de créer des templates (activé par défaut) qui utilisent les Magic Tags de Pods. Nous pouvons comparer ceci à un code bloc d'Oxygen. Il nous est donc possible d'utiliser le code court du template Pods dans une page créée avec Oxygen, l'avantage pouvant être de créer un équivalent d'un "reusable parts" et également utiliser la simplicité des codes courts de Pods. Voici une vidéo de présentation (en anglais) sur cet usage. Voir cette documentation.

Ajout d'article en frontend

Pods permet aussi de faire des formes pour ajouter ou éditer un article en frontend. Voir cette documentation.

Récupérer une image d'un champ multiple

Sur le groupe anglophone, un collègue a demandé s'il était possible de récupérer la première image d'un champ image multiple. L'idée étant de ne pas créer un deuxième champ pour une image en avant, par exemple, qui serait la première image d'une galerie. Comme ce champ est un tableau (array) nous pouvons récupérer l'image grâce à sa position dans le tableau. Récupérer le tableau dans une variable et cibler l'élément à récupérer (pour rappel un tableau commence à la valeur 0). Le code sera donc comme ceci pour la première image :

<?php
// get pods object
$mypod = pods( $post->post_type, $post->ID );

if ($mypod->field('property_slider')) {
  echo '<h3>Gallery:</h3>';
  echo '<div class="gallery-single">';
	foreach( $mypod->field('property_slider', true) as $picture) {
		echo '<div class="gal-single"><a href="' . $picture['guid'] . '" data-fancybox="gallery"><img src="' . $picture['guid'] . '" width="150" height="150" class="attachment-thumbnail size-thumbnail" alt="" /></a></div>';
	}
  echo '</div>';
$test = $mypod->field('property_slider', true);
}
<img src="<?php echo $test[0]['guid'];?>" alt="image" />

Pagination avec Pods

Pods possède ces propres fonctions pour la pagination. Attention la pagination fonctionne avec les modules Easypost et Repeater. Par défaut, WordPress utilise la valeur par défaut dans les préférences de lecture, mais il possible de changer ces valeurs suivant des conditions (deuxième code). Globalement nous devrons ajouter ceci :

<?php
$params = array( 
  	'limit' => 4,
    'orderby' => 't.post_title ASC',
);
$pods = pods( 'video', $params );

// Get the items, search is automatically handled
//$pods->find(); 

if ( $pods->total() > 0 ) {
    while( $pods->fetch() )  {
        //reset id
        $pods->id = $pods->id();    
        //get the template
        $temp = $pods->template( 'lifestream' );
        //output template if it exists
        if ( isset( $temp )  ) {       
            echo '<div class ="life-content">' . $temp . '</div>';
        }
    }
    //pagination
    echo $pods->pagination();
}
else {
    echo 'No content found.';
} 
?>

Dans certains cas où vous voudriez des paginations différentes, il faudra rajouter une fonction dans le functions.php. Voici les informations du codex et voici un exemple (CPT Properties et Agents, attention curieusement ce ne sont pas les slugs) :

function my_post_queries( $query ) {
  // do not alter the query on wp-admin pages and only alter it if it's the main query
  if (!is_admin() && $query->is_main_query()){

    // alter the query for the home and category pages 

    if(is_home()){
      $query->set('posts_per_page', 3);
    }

    // alter the query for the Movies category page 
    if(is_category('Properties')){
      $query->set('posts_per_page', 6);
    }
	  // alter the query for the Movies category page 
    if(is_category('Agents')){
      $query->set('posts_per_page', 4);
    }
  }
}
add_action( 'pre_get_posts', 'my_post_queries' );

à suivre ...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Suite à la monétisation des mes postes sur un site externe (https://oxyhowto.com/more_hows-categories/french/) sans mon autorisation, les postes sont uniquement visibles avec un compte.
Copyright © 2019 - 2023 Bulgaweb
 | 
Développé par BulgaWeb
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram