web-dev-qa-db-fra.com

Affichage des derniers messages sur une page

J'essaie de créer une boucle pour afficher le titre et l'extrait de chaque article de blog sur une page qui n'est pas ma page d'index. Le site de démonstration en cours est ici: http://thewestharbour.com/mypakage/

Sur la page de nouvelles, je dois afficher les 3 derniers articles du blog. Changer simplement les paramètres ne fonctionnera pas et chaque boucle que j'ai essayée ne fonctionnera pas non plus. J'ai également essayé de créer un modèle séparé et de l'attribuer à la page d'informations, mais sans succès.

Merci Wade

1
Wade D Ouellet

Vous pouvez modifier votre modèle de publication (généralement index.php, mais cela dépend de votre thème) pour:

  1. vérifier si la demande en cours doit répondre à ces messages
  2. ajoutez un segment qui interrogera la base de données pour récupérer les publications que vous souhaitez
  3. rappelez le titre et l'extrait de l'article à votre guise

Le code suivant interrogera la base de données et renverra une chaîne contenant les 5 dernières publications avec des extraits. Notez que $before, $after, $before_excerpt, $after_excerpt, ce ne sont que des wrappers pour que le contenu soit plus joli, vous pouvez les envoyer comme paramètre à la fonction, mais par souci de simplicité, je les ai codés en dur.

function get_posts()
{
    global $wpdb;

    $post_count = 5;
    $before = '<h3>';              // this will be rendered before the post content
    $after = '<br />';             // this will be rendered after the post content
    $before_excerpt = '</h3><p>';  // this will be rendered before the post excerpt
    $after_excerpt = '</p>';       // this will be rendered after the post excerpt

    $request =
    "
        select  ID,
                post_date,
                post_title,
                post_excerpt
        from    $wpdb->posts               p inner join
                $wpdb->term_relationships  r on r.object_id = p.ID inner join
                $wpdb->terms               t on t.term_id = r.term_taxonomy_id
        where   post_status = 'publish' 
                AND
                post_password = '' 
                AND
                post_type = 'post' 
        GROUP BY 
                ID,
                post_date,
                post_title,
                post_excerpt
        ORDER BY
                post_date DESC
        LIMIT   0, $post_count
    ";

    $posts = $wpdb->get_results($request);
    $output = '';

    if ($posts)
    {
        foreach ($posts as $post)
        {
            $post_title = $post->post_title;
            $permalink = get_permalink($post->ID);

            $output .= $before;
            $output .= '<a href="' . esc_url($permalink) . '" rel="bookmark" title="Permanent Link: ' . esc_attr($post_title) . '">' . esc_html($post_title) . '</a>';

            $post_excerpt = esc_html($post->post_excerpt);
            $output .= $before_excerpt . $post_excerpt . $after_excerpt;

            $output .= $after;
        }
    }

    return $output;
}
1
Miljenko Barbir