comment utiliser le flux rss sur des cutoms fields de wordrpess (Créer un compte)

  • WordPress :5.8
  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 26)
  • Auteur
    Messages
  • #2389291
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 8
    • Thème utilisé : colormag
    • Extensions en place : wp-members ACF CPT
    • Nom de l’hébergeur : hostinger
    • Adresse du site : test

    Problème(s) rencontré(s) :

    bonsoir a tous

    je suis confronte a un soucis ou je reste sans réponses

    je sis hébergé chez hostinger et j ai réalisé un site en php html css ect…dans un sous domaine …
    j’ai également réalisé un autre site mais cette fois avec wordpress et dans un domaine …

    je souhaiterais donc pouvoir afficher une catégorie d article de wordpress sur mon site réalisé en html php

    Le problème c’est qu’a l’intérieur de ces articles il y a des champs personnalisés que je ne parviens pas a récupérer

    Avec le code ci dessous je parviens a récupérer le texte et la description mais pas les champs personnalisés
    Le code est un code que j’ai trouve

     

    <?php
    if($flux = simplexml_load_file('https://lecannabiste.com/feed/'))
    {
    $donnee = $flux->channel;
    // Initialiser le compteur.
    $compteur = 0;
    // Affiche les 5 derniers articles.
    $limite = 5;
    foreach($donnee->item as $valeur)
    {
    echo '<p>'.date("d/m/Y",strtotime($valeur->pubDate)).'';
    echo ' - <a target="_blank" href="'.$valeur->link.'">'.$valeur->title.'</a>';
    echo ' '.$valeur->description.'</p>';
    // Le compteur incrémente +1 à chaque affichage.
    $compteur++;
    // Arrête d'afficher les articles quand la valeur limite est atteinte.
    if ($compteur == $limite)
    break;
    }
    }
    else {
    echo 'Le flux RSS du site Lecannabiste n\'a pas pu être chargé.';
    }
    ?>

    #2389292
    Lumiere de Lune
    Participant
    Maître WordPress
    19744 contributions

    Il faut ajouter les champs personnalisés au contenu via le filtre “the_content”

    Maintenant si je comprends bien tu veux afficher l’intégralité des articles d’un site sur un autre ? En terme de SEO c’est pas top 🙁

    #2389294
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    Merci pour la réponse aussi rapide

    je pourrais avoir un exemple avec ce filtre de “the_content” avec champ 1 par exemple

    oui voila je souhaiterais que mon site réalisé en php puisse afficher les articles avec des champs personnalisé d’ une catégorie  de wordpress

    avec un flux rss ou en interrogeant la base de donnée de wordpress

    Oui je me doute qu en terme de SEO ca sera pas le top

    #2389295
    Lumiere de Lune
    Participant
    Maître WordPress
    19744 contributions

    Voilà la doc…  https://developer.wordpress.org/reference/hooks/the_content/

    Dans ta fonction tu transformes le contenu en ajoutant les champs personnalisés comme tu le souhaites.
    Attention : ça sera aussi valable sur ton site wordpress, donc il faudra sans doute modifier tes templates

    #2389296
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    Merci pour la reponse et le lien

    j avais en effet vu cette solution

    Mais ce code est a insérer dans functions.php et donc comme tu dis cela va mettre le bazar ailleurs …

    Car le morceau de code que j’ai présenté ici plus haut est hébergé sur une page php du site réalisé en html et cla fonctionne parfaitement sauf pour les champs personnalisé

    #2389297
    Lumiere de Lune
    Participant
    Maître WordPress
    19744 contributions

    Oui bien sûr. Cela ne peut tout simplement PAS fonctionner avec les champs personnalisés. Ton code va chercher le flux RSS de WordPress. Donc il prend ce qu’il y a dans le flux RSS, et dans le flux RSS il y a le titre, l’url et …. the_content 🙂 Donc pour que cela fonctionne, tu dois avant que le flux rss, soit formé, modifier the_content. Pas d’autre solution..

    “le bazar” est limité, puisque c’est toi qui as défini l’affichage des champs personnalisés sur ta page single php. Tu vas simplement “transférer” cette partie là du code de ton single.php vers ton functions.php (ou mieux, vers un mini plugin, ce qui rendra la gestion des données indépendante de la présentation [le thème]).

    De toute façons, tu n’as pas d’autre solution ^^

    #2389298
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    Merci pour cette reponse

    je comprends parfaitement bien la première partie et de ce que le flux rss transporte

    ensuite pour le bazar

    dans le fichier single.php j ai une condition que si je choisis la catégorie nouveautés a c moment mes champs personnalisé sont affiches

    voici le contenu de mon fichier single.php

    je devrais prendre quelle partie alors dans mon cas stp

    <?php
    /**
     * Theme Single Post Section for our theme.
     *
     * @package    ThemeGrill
     * @subpackage ColorMag
     * @since      ColorMag 1.0
     */
    
    // Exit if accessed directly.
    if ( ! defined( 'ABSPATH' ) ) {
    	exit;
    }
    
    get_header();
    
    /**
     * Hook: colormag_before_body_content.
     */
    do_action( 'colormag_before_body_content' );
    ?>
    
    	<div id="primary">
    		<div id="content" class="clearfix">
    
    			<?php
    			/**
    			 * Hook: colormag_before_single_post_page_loop.
    			 */
    			do_action( 'colormag_before_single_post_page_loop' );
    //debut boucle pour les articles 
    			while ( have_posts() ) :
    				the_post();
    	//template pour montrer le contenu et l article d origine			
    get_template_part( 'content', 'single' );
    
    //debut boucle personnalisee ?>
    <?php if( has_category( 'nouveautes' ) ): ?>
    
    <!-- On affiche le titre -->
    	  <div class="box"style="    border: 5px solid #006799;  border-radius: 10px;    display: inline-block;    width: 100%; margin-top:10px;margin-bottom:10px;background-color: #fff;text-align:center;">	
      <h2 class="site__heading" >La pêche à la perle du <?php the_field('date'); ?></h2>
      </div>
      
          <div class="wp-content"><?php the_content(); ?></div>
    
    <!-- on affiche le membre  -->
    	   <div class="box"style=" border: 5px solid #006799;  border-radius: 10px; display: inline-block; width: 100%;">
            <div > <p style="border:solid;margin:10px;padding: 10px;margin:10px;text-align:center;background-color: #fff;"> Le membre<font color="red"><strong> <?php echo  get_the_author() ;?></strong></font>
    		
                    <?php if( get_field('ville_peche') ): ?>
                    <span class="glyphicon glyphicon-list-alt"></span> a été pêcher à <font color="red"><strong><?php the_field('ville_peche'); ?></strong></font> 
                <?php endif; ?>
    			
                <?php if( get_field('cours_deau') ): ?>
                <span class="glyphicon glyphicon-list-alt"></span>dans <font color="red"><strong><?php the_field('cours_deau'); ?></strong> </font></p>
            <?php endif; ?></div>
    		
            <div>
     <?php if( get_field('meteo') ): ?>
        <p style="border:solid;margin:10px;padding: 10px;margin:10px;text-align:center;background-color: #fff;"> <span class="glyphicon glyphicon-signal"></span>Conditions météorologiques<font color="red"><strong> <?php the_field('meteo'); ?></strong></font></p>
    <?php endif; ?>
    </div>
    
    <div>
     <?php if( get_field('esches_utilisees') ): ?>
        <p style="border:solid;margin:10px;padding: 10px;margin:10px;text-align:center;background-color: #fff;"> <span class="glyphicon glyphicon-signal"></span>Le membre a pêché avec  <font color="red"><strong><?php the_field('esches_utilisees'); ?></strong></font></p>
    <?php endif; ?>
    </div>
    
    
    
    
    <!-- on affiche la duree et total des poissons -->
    <div>
            <?php if( get_field('duree_de_ta_seance_de_peche') ): ?>
            <p style="border:solid;margin:10px;padding: 10px;margin:10px;text-align:center;background-color: #fff;"><span class="glyphicon glyphicon-fire"></span>La durée de la séance de pêche a été de <font color="red"><strong><?php the_field('duree_de_ta_seance_de_peche'); ?>h00</strong></font>
        <?php endif; ?>
    <?php if( get_field('total_des_prises') ): ?>
        <span class="glyphicon glyphicon-time"></span>pour un total de <font color="red"><strong><?php the_field('total_des_prises'); ?></strong></font> poissons</p>
    <?php endif; ?>
    </div>
    
    <!-- on affiche la moyenne des captures -->
    <div >
    <?php if( get_field('minute') ): ?>
    <?php $entier =get_field('minute') ;  ?>
     <p style="border:solid;margin:10px;padding: 10px;margin:10px;text-align:center;background-color: #fff;"><span class="glyphicon glyphicon-signal">La moyenne des captures est de </span><font color="red"><strong><?php  echo(round($entier) . " poissons par heure <br>"); ?><strong></font></p>
    <?php endif; ?>
    </div>
    
    <!-- on affiche le detail des prises-->
           <div style="margin:10px;border-color: red;padding: 10px;margin:10px;border:solid;text-align:center;background-color: #fff;">
    <p>le détail des prises</p>
    </div>
    
    
    <div >
     <?php if( get_field('nombre_de_gardons') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"><span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_gardons'); ?> gardon(s) </strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_de_bremes') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;">  <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_bremes'); ?> bréme(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_perches') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;">  <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_perches'); ?> perche(s)</strong>:</p>
    <?php endif; ?>
    </div>
    
    <div >
    <?php if( get_field('nombre_dablettes') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;">  <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_dablettes'); ?> ablettes</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_de_rotengles') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;">  <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_rotengles'); ?> rotengle(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_de_carpes') ): ?>
       <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"> <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_carpes'); ?>carpe(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
    <?php if( get_field('nombre_de_goujons') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;">  <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_goujons'); ?> goujon(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_de_tanches') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"><span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_tanches'); ?> tanche(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
    <?php if( get_field('nombre_de_carassins') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"><span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_carassins'); ?> carassin(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
    <?php if( get_field('nombre_dides') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"> <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_dides'); ?> ide(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_ddhybrides') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"> <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_ddhybrides'); ?> dhybride(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
    <?php if( get_field('nombre_de_sandres') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"> <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_sandres'); ?> sandre(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
    <?php if( get_field('nombre_de_brochets') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"> <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_brochets'); ?> brochet(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_danguilles') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"> <span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_danguilles'); ?> anguille(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_de_gobies') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"> <span class="glyphicon glyphicon-signal"><span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_gobies'); ?> gobie(s)</strong></p>
    <?php endif; ?>
    </div>
    
    <div >
     <?php if( get_field('nombre_de_truite') ): ?>
        <p style="border:solid;float: left;margin:10px;padding: 10px;margin:10px;background-color: #fff;"> <span class="glyphicon glyphicon-signal"><span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('nombre_de_truite'); ?> truite(s)</strong></p>
    <?php endif; ?>
    </div>	
    
          </div>
          
             <div class="box"style="    border: 5px solid #006799;  border-radius: 10px;    display: inline-block;    width: 100%; margin-top:10px;background-color: #fff;">
    	       <div>
     <?php if( get_field('resume') ): ?>
        <p> <span class="glyphicon glyphicon-signal"></span>Le resumé de la journée de pêche<strong><br><?php the_field('resume'); ?></strong></p>
    <?php endif; ?>
    </div>
    	     </div> 
    	     
    	     
    
     
    <div class="embed-container" style ="text-align:center;">
        <?php the_field('video'); ?>
    </div>
    
    <div class="box"style="    border: 5px solid #006799;  border-radius: 10px;    display: inline-block;    width: 100%; margin-top:10px;margin-bottom:10px;background-color: #fff;text-align:center;">
     <?php if( get_field('lien') ): ?>
        <span class="glyphicon glyphicon-signal"><span class="glyphicon glyphicon-signal"></span> <strong><?php the_field('lien'); ?> </strong>
    <?php endif; ?>
    </div>	
    
    
     <div class="box"style="    border: 5px solid #006799;  border-radius: 10px;    display: inline-block;    width: 100%; margin-top:10px;background-color: #fff;">
    	<?php
    		//affichage de la galerie numero2
        //Get the images ids from the post_metadata
        $images = acf_photo_gallery('gallery', $post->ID);
        //Check if return array has anything in it
        if( count($images) ):
            //Cool, we got some data so now let's loop over it
            foreach($images as $image):
                $id = $image['id']; // The attachment id of the media
                $title = $image['title']; //The title
                $caption= $image['caption']; //The caption
                $full_image_url= $image['full_image_url']; //Full size image url
               // $full_image_url = acf_photo_gallery_resize_image($full_image_url, 262, 160); //Resized size to 262px width by 160px height image url
                $thumbnail_image_url= $image['thumbnail_image_url']; //Get the thumbnail size image url 150px by 150px
                $url= $image['url']; //Goto any link when clicked
                $target= $image['target']; //Open normal or new tab
                $alt = get_field('photo_gallery_alt', $id); //Get the alt which is a extra field (See below how to add extra fields)
                $class = get_field('photo_gallery_class', $id); //Get the class which is a extra field (See below how to add extra fields)
    ?>
    <div class="col-xs-6 col-md-3">
        <div class="thumbnail">
            <?php if( !empty($url) ){ ?><a href="<?php echo $url; ?>" <?php echo ($target == 'true' )? 'target="_blank"': ''; ?>><?php } ?>
            
                <div class="featured-image" style="float: left;margin:5px;">
    
    <a href="<?php echo $full_image_url; ?>" 
    class="image-popup">
    <img src="<?php echo $thumbnail_image_url; ?>" alt="<?php echo $title; ?>" title="<?php echo $title; ?>" alt="" loading="lazy"></a>
    								</div>	
       
            <?php if( !empty($url) ){ ?></a><?php } ?>
        </div>
    </div>
    
    <?php endforeach; endif; ?>
    
    </div>
     
    
    <?php //fin du if de has category
    endif;?>
    <?php 
    //fin boucle personnalisee
    
    				
    				
    			endwhile;
    
    			/**
    			 * Hook: colormag_after_single_post_page_loop.
    			 */
    			do_action( 'colormag_after_single_post_page_loop' );
    			?>
    
    		</div><!-- #content -->
    
    		<?php
    		if ( true === apply_filters( 'colormag_single_post_page_navigation_filter', true ) ) :
    			get_template_part( 'navigation', 'single' );
    		endif;
    
    		/**
    		 * Functions hooked into colormag_action_after_single_post_content action.
    		 *
    		 * @hooked colormag_author_bio - 10
    		 * @hooked colormag_related_posts - 20
    		 */
    		do_action( 'colormag_action_after_single_post_content' );
    
    		/**
    		 * Hook: colormag_before_comments_template.
    		 */
    		do_action( 'colormag_before_comments_template' );
    
    		/**
    		 * Functions hooked into colormag_action_after_inner_content action.
    		 *
    		 * @hooked colormag_render_comments - 10
    		 */
    		do_action( 'colormag_action_comments' );
    
    		/**
    		 * Hook: colormag_after_comments_template.
    		 */
    		do_action( 'colormag_after_comments_template' );
    		?>
    
    	</div><!-- #primary -->
    
    <?php
    colormag_sidebar_select();
    
    /**
     * Hook: colormag_after_body_content.
     */
    do_action( 'colormag_after_body_content' );
    
    get_footer();

    #2389299
    Lumiere de Lune
    Participant
    Maître WordPress
    19744 contributions

    Après je pense que tu te prends bien la tête… si tes deux sites sont chez le même hébergeur, il serait beaucoup plus simple d’aller taper directement dans la base de données du site wordpress, plutôt que de passer par le flux.

    #2389300
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    oui ils sont chez le même hébergeur

    c est ce que je pensais aussi …aller me servir dans la base de donnée de wordpess

    mais que mettre dans ma requête ?

    #2389301
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    j ai essaye comme ca

    mais rien n est sorti

     

     <?php
     
     try{
    $bdd =new PDO("mysql:host=localhost;dbname=u43460f;charset=utf8", "u4Yd", "Ss2");
    // Activation des erreurs PDO
     $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
     $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    } catch(PDOException $e) {
        die('Erreur : ' . $e->getMessage());
    }
    
    	function getFruit($bdd) {
    	$sql =  'SELECT * FROM _postmeta WHERE meta_key ';
    	foreach  ($bdd->query($sql) as $row) {
    		var_dump($row);
      }
    }

    #2389305
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    voici mon dernier essai

    $bdd =new PDO("mysql:host=localhost;dbname=u48f;charset=utf8", "u3Yd", "S02");
    // Activation des erreurs PDO
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
    $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    } catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
    }
    $reponse = $bdd->query('SELECT * FROM _postmeta WHERE meta_key = ville_peche or meta_key = cours_deau or meta_key = titre');
    // On affiche chaque entrée une à une
    while ($donnees = $reponse->fetch())
    {
    var_dump($donnees);
    }

    #2389333
    Lumiere de Lune
    Participant
    Maître WordPress
    19744 contributions

    tu as mis simplement “_” comme préfixe de base ? Tu n’entoures pas tes critères ? Genre

    meta_key = 'ville_peche'

    Fais donc un var_dump de ton $reponse

    #2389336
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    Merci pour l aide

    mon préfixe est camouflé

    voila je viens de modifier le code

    voici une partie de ce qui sort

     string(119) "SELECT * FROM 2_postmeta WHERE meta_key = 'ville_peche' or meta_key = 'cours_deau' or meta_key = 'titre'" } object(PDOStatement)#2 (1) { ["queryString"]=> string(119) "

     

    #2389340
    Lumiere de Lune
    Participant
    Maître WordPress
    19744 contributions

    Là je te laisse débuguer toi même pas à pas, c’est un pb de php/sql 😀

    #2389342
    flexi2202
    Participant
    Chevalier WordPress
    133 contributions

    merci

    mais un problème de php /sql cela est flou

    car dans le résultat du var_dump j ai ma requête qui y apparaît  fois le nombre de mes articles

15 sujets de 1 à 15 (sur un total de 26)
  • Vous devez être connecté pour répondre à ce sujet.