web-dev-qa-db-fra.com

Comment sortir un PHP valeurs de fichier par shortcode?

J'essaie de générer les valeurs de deux champs personnalisés créés par le plug-in ACF dans un type d'article personnalisé. J'ai besoin que cela soit affiché dans une fenêtre popup. Les plugins wordpress popup ne supportent pas le code php, seuls les shortcodes peuvent être appelés depuis l'éditeur de contenu. J'essaie donc de créer un shortcode à utiliser dans l'éditeur de la fenêtre contextuelle pour afficher les valeurs des champs personnalisés. Je sais que nous pouvons générer un shortcode [cite] en utilisant ce code dans le thème functions.php

function cite_shortcode() {
}
add_shortcode( 'cite', 'cite_shortcode' );

Mais je ne pouvais pas comprendre comment ajouter le code PHP à ce code. J'ai essayé de faire quelque chose comme:

function cite_shortcode() {
<div>
<?php
$object_terms = wp_get_object_terms( $post->ID, 'issue', array( 'fields' => 'all' ) );
if ( $object_terms ) {
    $res = '';
    foreach ( $object_terms as $term ) {
        if ( $term->parent ) { 
            $res .=  $term->name . ', '; 
        }
    }
    echo rtrim($res,' ,');  
}
?>), pp: <?php the_field('first_page'); ?>-<?php the_field('last_page'); ?>
</div>
}
add_shortcode( 'cite', 'cite_shortcode' );

Mais ça n'a pas marché. ça montre:

Erreur d'analyse: erreur de syntaxe, inattendue

Donc, mes questions sont:

  1. comment puis-je faire fonctionner ce code?
  2. est-il possible de mettre le code php dans le fichier cite.php et d'afficher ses valeurs via un shortcode généré dans functions.php? et comment faire ça?

Meilleures salutations

1
nisr

Nous avons construit des codes abrégés dans le passé en utilisant des variables de concaténation.

Pour paraphraser le lien ci-dessus, vous devez générer votre PHP en tant que tel.

 $output = '<p>';
 $output .= '<strong>' . $content . '</strong>';
 $output .= '</p>';
 return $output;

Remarque: voir la concaténation de la variable .=.

1
WPZA

Juste au cas où quelqu'un chercherait cela à l'avenir ...

La bonne façon de générer une valeur php via un shortcode est la suivante:

add_shortcode('shortcode_name', 'shortcode_callback');
function shortcode_callback( $atts = array(), $content = null ) {

   $output = "Add your PHP here!!!";

   return $output;

}

Salutations de la Grèce ensoleillée !!!

0
BigDropGR
  1. comment puis-je faire fonctionner ce code?
function cite_shortcode($atts) {
    $output = '<div>';

    $object_terms = wp_get_object_terms( $post->ID, 'issue', array( 'fields' => 'all' ) );

    if ( $object_terms ) {

        $res = '';

        foreach ( $object_terms as $term ) {

            if ( $term->parent ) { 
                $res .=  $term->name . ', '; 
            }

        }

        $output .=  rtrim($res,' ,');  
    }

    $output .= 'pp: '.get_the_field('first_page') . '-' . get_the_field('last_page');

    $output .= '</div>';

    return $output ;
}

add_shortcode( 'cite', 'cite_shortcode' );
  1. est-il possible de mettre le code php dans le fichier cite.php et d'afficher ses valeurs via un shortcode généré dans functions.php? et comment faire ça?

Dans ce cas, vous pouvez inclure votre fichier php dans un code court, quelque chose de similaire à ce code

function cite_shortcode($atts) {
    $output = '';

    ob_start();

    include "yourphpfile.php"; // Replace with exact location of php file 


    $output .= ob_get_clean();

    return $output ;
}

add_shortcode( 'cite', 'cite_shortcode' );

J'espère que ça aide.

0
Qaisar Feroz