get_post_meta qui ne retourne aucune valeur

  • WordPress :4.8.2
  • Statut : non résolu
  • Ce sujet a 1 participant et 0 réponse.
Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #1965251

    Syndrah
    Participant
    Initié WordPress
    32 contributions

    Bonjour,

    Ma configuration WP actuelle : 4.8.3

    • Version de PHP/MySQL :
    • Thème utilisé : Equinox
    • Extensions en place : Contact form 7, FooGallery, Foobox – Lightbow d’image, Meta Box, User Role Editor, WP Maintenance Mode
    • Nom de l’hébergeur : OVH
    • Adresse du site : http://www.dollsreview.fr

    Problème(s) rencontré(s) : Mes get_post_meta() ne retourne actuellement aucune valeur malgré que cela soit rempli en BO et bien enregistré dans la BDD.

     

    <?php get_header(); ?>
    
        <?php while ( have_posts() ) : the_post(); ?>
            <div class="main-post-div"><?php the_post_thumbnail( 'small' ); ?>
                <div class="single-page-post-heading">
                <h1><?php the_title(); ?></h1>
                </div>
                <div class="content-here">
    			Année : <?php get_post_meta($post->ID,'annee',true); ?><br />
    			Prix moyen : <?php get_post_meta($post->ID,'prixmoyen',true); ?><br />
    			type de mécanisme : <?php get_post_meta($post->ID,'typedemecanisme',true); ?><br />
    			Fabricant : <?php get_post_meta($post->ID,'fabricant',true); ?><br />
    			Skin : <?php get_post_meta($post->ID,'skin',true); ?><br />
    			En collaboration avec : <?php get_post_meta($post->ID,'encollaboration',true); ?><br />
                </div>
            </div>
    
        <?php endwhile; ?>
    
    <?php get_footer(); ?>

    La partie du fichier function qui nous intéresse :

    // Création du CPT
    add_action( 'init', 'create_post_type' );
    function create_post_type() {
      register_post_type( 'pullips',
        array(
          'labels' => array(
            'name' => __( 'Pullips' ),
            'singular_name' => __( 'Pullips' )
          ),
          'public' => true,
          'supports' => array( 'title', 'editor', 'thumbnail' ),
        )
      );
    register_taxonomy( 'couleur', 'produit', array( 'hierarchical' => true, 'label' => 'Couleur', 'query_var' => true, 'rewrite' => true ) );
    }
    
    class informationsMetabox {
      private $screen = array(
        'pullips',
      );
      private $meta_fields = array(
        array(
          'label' => 'Année',
          'id' => 'annee',
          'type' => 'text',
        ),
        array(
          'label' => 'Prix moyen',
          'id' => 'prixmoyen',
          'type' => 'text',
        ),
        array(
          'label' => 'Type de mécanisme',
          'id' => 'typedemecanisme',
          'type' => 'radio',
          'options' => array(
            'Ancien',
            'Récent',
          ),
        ),
        array(
          'label' => 'Fabricant',
          'id' => 'fabricant',
          'type' => 'radio',
          'options' => array(
            'Groove',
            'Jun Planning',
          ),
        ),
        array(
          'label' => 'Skin',
          'id' => 'skin',
          'type' => 'radio',
          'options' => array(
            'White',
            'Natural',
            'Mocha',
          ),
        ),
        array(
          'label' => 'En collaboration avec',
          'id' => 'encollaboration',
          'type' => 'text',
        ),
      );
      public function __construct() {
        add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
        add_action( 'save_post', array( $this, 'save_fields' ) );
      }
      public function add_meta_boxes() {
        foreach ( $this->screen as $single_screen ) {
          add_meta_box(
            'informations',
            __( 'Informations', 'textdomain' ),
            array( $this, 'meta_box_callback' ),
            $single_screen,
            'advanced',
            'high'
          );
        }
      }
      public function meta_box_callback( $post ) {
        wp_nonce_field( 'informations_data', 'informations_nonce' );
        $this->field_generator( $post );
      }
      public function field_generator( $post ) {
        $output = '';
        foreach ( $this->meta_fields as $meta_field ) {
          $label = '<label for="' . $meta_field['id'] . '">' . $meta_field['label'] . '</label>';
          $meta_value = get_post_meta( $post->ID, $meta_field['id'], true );
          if ( empty( $meta_value ) ) {
            $meta_value = $meta_field['default']; }
          switch ( $meta_field['type'] ) {
            case 'radio':
              $input = '<fieldset>';
              $input .= '<legend class="screen-reader-text">' . $meta_field['label'] . '</legend>';
              $i = 0;
              foreach ( $meta_field['options'] as $key => $value ) {
                $meta_field_value = !is_numeric( $key ) ? $key : $value;
                $input .= sprintf(
                  '<label><input %s id=" % s" name="% s" type="radio" value="% s"> %s</label>%s',
                  $meta_value === $meta_field_value ? 'checked' : '',
                  $meta_field['id'],
                  $meta_field['id'],
                  $meta_field_value,
                  $value,
                  $i < count( $meta_field['options'] ) - 1 ? '<br>' : ''
                );
                $i++;
              }
              $input .= '</fieldset>';
              break;
            default:
              $input = sprintf(
                '<input %s id="%s" name="%s" type="%s" value="%s">',
                $meta_field['type'] !== 'color' ? 'style="width: 100%"' : '',
                $meta_field['id'],
                $meta_field['id'],
                $meta_field['type'],
                $meta_value
              );
          }
          $output .= $this->format_rows( $label, $input );
        }
        echo '<table class="form-table"><tbody>' . $output . '</tbody></table>';
      }
      public function format_rows( $label, $input ) {
        return '<tr><th>'.$label.'</th><td>'.$input.'</td></tr>';
      }
      public function save_fields( $post_id ) {
        if ( ! isset( $_POST['informations_nonce'] ) )
          return $post_id;
        $nonce = $_POST['informations_nonce'];
        if ( !wp_verify_nonce( $nonce, 'informations_data' ) )
          return $post_id;
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
          return $post_id;
        foreach ( $this->meta_fields as $meta_field ) {
          if ( isset( $_POST[ $meta_field['id'] ] ) ) {
            switch ( $meta_field['type'] ) {
              case 'email':
                $_POST[ $meta_field['id'] ] = sanitize_email( $_POST[ $meta_field['id'] ] );
                break;
              case 'text':
                $_POST[ $meta_field['id'] ] = sanitize_text_field( $_POST[ $meta_field['id'] ] );
                break;
            }
            update_post_meta( $post_id, $meta_field['id'], $_POST[ $meta_field['id'] ] );
          } else if ( $meta_field['type'] === 'checkbox' ) {
            update_post_meta( $post_id, $meta_field['id'], '0' );
          }
        }
      }
    }
    if (class_exists('informationsMetabox')) {
      new informationsMetabox;
    };

    J’arrive pas vraiment à savoir d’où ça vient. J’ai testé quelques trucs trouvés ici et là, sans grand succès.

    Merci donc à qui pourra éclairer ma lanterne !

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.