come ottenere il contenuto specifico di una pagina

17 ago 2013, 18:05:42
Visualizzazioni: 16.9K
Voti: 1

Di seguito il mio codice che funziona bene ma il problema è che non restituisce i tag html.. come <p> etc... non ho idea del perché...

<?php $recent = new WP_Query("page_id=2"); while($recent->have_posts()) : $recent->the_post();?>
    <?php 
    echo substr(get_the_excerpt(), 0,450);

     ?>
     <a href="<?php the_permalink() ?>" rel="bookmark">
             Altro su di noi
              </a>

Di seguito un altro codice dove i tag html e tutto il resto vanno bene... ma non riesco a capire come inserire il permalink lì.. il permalink che ho inserito non funziona.

<?php
$my_id = 2;
$page_id = get_post($my_id);
$content = $page_id->post_content;
echo substr($content, 0, 450);

?>
  <a href="<?php the_permalink() ?>" >Altro su di noi</a>

Inoltre qual è il modo migliore per ottenere il contenuto specifico di una pagina come nel modo seguente

<h2>titolo</h2>
<div>immagine in evidenza </div>
<div>contenuto</div>
<a href="<?php the_permalink() ?>" rel="bookmark">
0
Tutte le risposte alla domanda 2
2

Invece di chiamare WP_Query() puoi usare get_post() e "preparare" il global $post. Probabilmente è un po' più efficiente della risposta di @tf, anche se le idee sono sostanzialmente le stesse.

Nota bene: in entrambi i casi dovresti ripristinare i dati del post successivamente.

/**
 * Mostra il contenuto del post. Opzionalmente può essere passato l'ID del post
 * @uses the_content()
 *
 * @param int $id Opzionale. ID del post.
 * @param string $more_link_text Opzionale. Testo per quando c'è altro contenuto.
 * @param bool $stripteaser Opzionale. Rimuovi il contenuto teaser prima del testo "altro". Default è false.
 */
function sh_the_content_by_id( $post_id=0, $more_link_text = null, $stripteaser = false ){
    global $post;
    $post = &get_post($post_id);
    setup_postdata( $post, $more_link_text, $stripteaser );
    the_content();
    wp_reset_postdata();
}

Fonte: http://stephenharris.info/get-post-content-by-id/

17 ago 2013 18:47:11
Commenti

Beh, la logica non è mia - ho solo preso quello che c'era nella domanda e l'ho migliorato un po'. ;) Se si tratta di un solo post che interessa, hai naturalmente ragione - nell'usare get_post. Tuttavia, visto che il loop era già presente all'inizio, l'ho lasciato così.

tfrommen tfrommen
17 ago 2013 18:53:10

link con URL non funzionante

Jon Jon
23 apr 2021 14:46:35
0

(get_)the_excerpt() rimuove i tag HTML - ecco perché non hai i tag HTML. ;)

Usa semplicemente the_content() invece di the_excerpt() se vuoi mostrare il contenuto completo.

$recent = new WP_Query("page_id=2");
while ($recent->have_posts()) : $recent->the_post();
    echo '<a href="'.get_the_permalink().'" rel="bookmark">Permalink</a>';
    the_content();
endwhile;
wp_reset_postdata();

Per quanto riguarda il modo migliore per visualizzare i dati del post, dovresti dare un'occhiata a questo.

17 ago 2013 18:33:06