web-dev-qa-db-fra.com

Wordpress: inclure le contenu d'une page dans une autre

Comment inclure le contenu d'une ou plusieurs pages dans une autre page?

ex. J'aipageA,pageBetpageCet je souhaite inclure le contenu de ces pages danspageX

existe-t-il une fonction wordpress qui charge le message d'une page/d'un message spécifique?
comme show_post ("pageA") ??

24
Zebra

Bonjour @dany:

Il n’existe pas de fonction show_post() en soi dans WordPress, mais il est extrêmement facile d’écrire:

function show_post($path) {
  $post = get_page_by_path($path);
  $content = apply_filters('the_content', $post->post_content);
  echo $content;
}

Notez que cela serait appelé avec le chemin de la page, c'est-à-dire:

<?php show_post('about');  // Shows the content of the "About" page. ?>
<?php show_post('products/widget1');  // Shows content of the "Products > Widget" page. ?>

Bien sûr, je ne nommerais probablement pas une fonction aussi générique que show_post() au cas où le noyau WordPress ajouterait une fonction du même nom à l'avenir. Votre choix cependant.

En outre, et sans aucune intention légère destinée à @kevtrout _ parce que je sais qu'il est très bon, pensez à poster vos questions WordPress sur le site soeur de StackOverflow WordPress Answers à l'avenir. Il y a un pourcentage beaucoup plus élevé de passionnés de WordPress qui répondent aux questions là-bas.

J'espère que cela t'aides.

-Mike

45
MikeSchinkel

Les pages ne sont que des publications, avec un type de page "post" dans la base de données. Vous pouvez afficher le contenu de plusieurs pages sur une autre page en écrivant dans votre modèle pageX une requête de publication qui récupère les publications que vous spécifiez et les affiche dans une boucle.

Il existe trois façons d'obtenir du contenu de publication à partir de la base de données:

  1. get_posts
  2. query_posts
  3. WP_Query

Ces liens pointent tous vers le Codex WordPress. Get_posts et query_posts ont un argument disponible, 'page_id', dans lequel vous pouvez spécifier l'id de la page que vous souhaitez récupérer et afficher.

2
kevtrout

J'ai trouvé cette réponse posté sur les forums Wordpress. Vous ajoutez un peu de code à functions.php, puis utilisez un shortcode à votre guise.

function get_post_page_content( $atts ) {
        extract( shortcode_atts( array(
            'id' => null,
            'title' => false,
        ), $atts ) );

        $the_query = new WP_Query( 'page_id='.$id );
        while ( $the_query->have_posts() ) {
            $the_query->the_post();
                if($title == true){
                the_title();
                }
                the_content();
        }
        wp_reset_postdata();

    }
    add_shortcode( 'my_content', 'get_post_page_content' );

Pour le shortcode, 

[my_content id="Enter your page id number" title=Set this to true if you want to show title /]
2
Kit Johnson

Vous pouvez installer un plugin "Improved Include Page" . Une fois installé, vous créez la page X et entrez:

[include-page id="123"]
[include-page id="124"]
[include-page id="125"]

où ce sont les identifiants des pages A, B et C respectivement

2
Dario
<?php query_posts('p=43');

global $more;
//set $more to 0 in order to only get the first part of the post
$more = 0; 

    // the Loop
    while (have_posts()) : the_post(); 

     // the content of the post ?>
    the_title();
    the_content(); 

    endwhile; ?>

Ceci est évidemment une partie de la publication, j'ai eu le détail du codex wordpress.

1
Stuart

Il existe une fonction Wordpress permettant d'afficher le contenu d'une page particulière dans une autre à l'aide de query_posts ().

<?php query_posts("posts_per_page=1&post_type=page&post_id=134"); the_post(); ?>

Vous définissez le nombre de pages à afficher sur 1, le type de publication est la page au lieu de la publication et l'identifiant de la page.

0
Neil

La solution de forum wordpress de Kit Johnson avec la création d'un shortcode fonctionne, mais ajoute la page insérée en haut de la nouvelle page, pas l'endroit où le shortcode a été ajouté. Bien que proche, et peut travailler pour d'autres personnes. 

de la publication wordpress, j'ai reconstitué ce qui insère la page où est placé le shortcode: 

function get_post_page_content( $atts ) {
    extract( shortcode_atts( array(
        'id' => null,
        'title' => false,
    ), $atts ) );
    $output = "";       

    $the_query = new WP_Query( 'page_id='.$id );
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
            if($title == true){
            $output .= get_the_title();
            }
            $output .= get_the_content();
    }
    wp_reset_postdata();
    return $output;

}

Ensuite, le bit shortcode fonctionne comme prévu. Si vous ne voulez pas le titre, title = false ne fonctionne pas, vous devez laisser le titre complètement. 

0
user2961664

Intéressant ... J'ai cherché autour de moi comment intégrer du contenu Wordpress ailleurs (comme sur un autre site Web), et j'ai trouvé des choses ...

  • www. shooflydesign.org/buzz/past/embedding_wordpress. html
    • Montre comment incorporer du contenu Wordpress dans un autre site avec un script php; peut-être simplement utiliser la même chose pour intégrer Wordpress à lui-même?
  • www. corvidworks. com/articles/wordpress-contenu-sur-autres-pages
    • Concept similaire intégrer Wordpress sur une autre page; juste essayer d'utiliser cet outil dans un nouveau WP post
  • se nourrit
    • Ma recherche a abouti à quelques suggestions d'utilisation d'un flux sur votre propre blog afin de l'intégrer à un message. Rien ne l'empêche. Vous voudrez peut-être que ce soit automatisé et que restructurer le flux pour bien paraître peut donc être problématique, mais cela en vaut la peine, en fonction de ce que vous souhaitez faire.

J'espère que ceux-ci sont quasi utiles. Bien qu'elles constituent toutes des solutions pour obtenir votre contenu WP à un endroit autre que WP ..., elles peuvent fonctionner pour votre question et vous permettre d'afficher A, B et C sur X.

0
Hendy