• User

    funzione php!! qualcuno mi puo aiutare?

    salve ragazzi, questo è il mio primo post in questo forum 🙂

    Premetto che adesso sto iniziando a masticare un po di php.

    volevo chiedervi una delucidazione, sto creando un tema personalizzato per il mio sito in wordpress. Vorrei creare un funzione php che legga negli ultimi 20 articoli scritti e che prenda quello che abbia il campo personalizzato attivato (che io gli ho impostato nell'articolo) e mi vada a impostare nella home page l'immagine in evidenza dell'articolo, con delle dimensioni ben precise. L'immagine presente nella home deve diventare un link che rimanda all'articolo. Ho dato uno sguardo a queste due funzioni wordpress [PHP]wp_query[/PHP] e [PHP]wp_get_recent_posts[/PHP] quale potrebbe andare meglio per ricercare l'articolo con il campo? avevo iniziato a buttare giù anche un po di codice:
    PS SO CHE PRIMA DI COSTUTIRE IL CAMPO PERSONALIZZATO BISOGNA RICHIAMARE IL POST CON IL VALORE
    [PHP]function thumbnail_home($id) {
    $thumbnail = get_post_meta($id, 'img_evidenza',true)
    }[/PHP]

    GRAZIE PER L'AIUTO:smile5::smile5::smile5:


  • User Attivo

    Ciao, prova così:

    [PHP]

    <?php
    $args = array(
    'posts_per_page' => '3',
    'meta_query' => array(

        array(           
                'key' => 'rt_featured_post',
                'value' => 'si',
    

    ) ,
    ) ,
    );

    $featured_post = new WP_Query($args);

    while ($featured_post->have_posts()):

    $featured_post->the_post();?>
    

    // LOOP

    <?php endwhile;

    wp_reset_query(); ?>

    [/PHP]

    Dove:

    **posts_per_page **è il numero di post che vuoi mostrare nel loop,
    key è il nome del campo personalizzato
    value è il valore del campo personalizzato

    In questo esempio mostra i primi 3 post con un il campo personalizzato rt_featured_post con valore si.

    All'interno del // LOPP inserisci le varie funzioni per richiamare titolo, link etc... Che nel tuo caso potrebbe essere - sempre che abbia capito bene:

    [PHP]
    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('img_evidenza'); ?></a>
    [/PHP]

    Spero di esserti stato di aiuto 🙂


  • User

    GRAZIE MILLE PROVO SUBITO:smile5::smile5:


  • User

    @all2aller said:

    Ciao, prova così:

    [PHP]

    <?php
    $args = array(
    'posts_per_page' => '3',
    'meta_query' => array(

        array(           
                'key' => 'rt_featured_post',
                'value' => 'si',
    

    ) ,
    ) ,
    );

    $featured_post = new WP_Query($args);

    while ($featured_post->have_posts()):

    $featured_post->the_post();?>
    

    // LOOP

    <?php endwhile;

    wp_reset_query(); ?>

    [/PHP]

    Dove:

    **posts_per_page **è il numero di post che vuoi mostrare nel loop,
    key è il nome del campo personalizzato
    value è il valore del campo personalizzato

    In questo esempio mostra i primi 3 post con un il campo personalizzato rt_featured_post con valore si.

    All'interno del // LOPP inserisci le varie funzioni per richiamare titolo, link etc... Che nel tuo caso potrebbe essere - sempre che abbia capito bene:

    [PHP]
    <a rel="nofollow" href="<?php the_permalink(); ?>"><?php the_post_thumbnail('img_evidenza'); ?></a>
    [/PHP]

    Spero di esserti stato di aiuto 🙂
    Scusami non ho ben capito una cosa per inserire le altre chiamate titolo link ecc la riga va prima di //LOOP o dopo?


  • User Attivo

    La riga va al posto del //LOOP. Il codice completo dovrebbe essere questo:

    [PHP]

    <?php
    $args = array(
    'posts_per_page' => '3',
    'meta_query' => array(

        array(           
                'key' => 'rt_featured_post',
                'value' => 'si',
    

    ) ,
    ) ,
    );

    $featured_post = new WP_Query($args);

    while ($featured_post->have_posts()):

    $featured_post->the_post();?>
    

    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('img_evidenza'); ?></a>

    <?php endwhile;

    wp_reset_query(); ?>

    [/PHP]

    Le scritte che iniziano con // non sono altro che commenti http://goo.gl/fVVMkF


  • User

    ok grazie mille, si lo so


  • User

    Scusami ancora per il disturbo, ma alla line 338 mi viene restituito questo errore syntax error, unexpected '<'

    la linea 338 è il collegamento ipertestuale dal immagine al link


  • User Attivo

    Di niente. Ho provato ora il codice e sembra corretto (funziona), controlla di non averlo inserito in mezzo ad altro.


  • User

    @all2aller said:

    Di niente. Ho provato ora il codice e sembra corretto (funziona), controlla di non averlo inserito in mezzo ad altro.

    [PHP]
    if (!function_exists( 'thumbnail_home')) {

    function thumbnail_home() {

    $args = array(
    'posts_per_page' => '1',
    'meta_query' => array(

        array(           
                'key' => 'img_evidenza',
                'value' => 'si',
    

    ) ,
    ) ,
    );

    $featured_post = new WP_Query($args);

    while ($featured_post->have_posts()):

    $featured_post->the_post();
    

    <a href="< the_permalink(); >">< the_post_thumbnail('img_evidenza'); ></a>

    endwhile;

    wp_reset_query();

    }

    }

    [PHP]

    ecco semplicemente tramutandolo in una funzione poichè mi serve per più scopi


  • User Attivo

    Il codice è sbagliato

    [PHP] function thumbnail_home()

    {
        $args = array(
          'posts_per_page' => '1',
          'meta_query' => array(
            array(
              'key' => 'img_evidenza',
              'value' => 'si',
            ) ,
          ) ,
        );
        $featured_post = new WP_Query($args);
    
    
    
    
        while ($featured_post->have_posts()):
        $featured_post->the_post(); ?>
        
        <a href="<?php the_permalink(); ?>>"><?php the_post_thumbnail('img_evidenza'); ?>></a>
    
    
    
    
       <?php endwhile;
        wp_reset_query();
    
    
    
    
    
    
    }
    

    [/PHP]

    Se incolli questo pezzo di codice all'interno del functions.php del tuo tema puoi richiamare questa funzione dove vuoi con <?php thumbnail_home(); ?> .


  • User

    GRAZIE Mille, Adesso funziona


  • User

    ciao poichè ho riscontrato alcuni problemi con l'immagine che richiamo dall'articolo vorrei che l'immagine si trovi in una cartella in wp_content
    e poi venga richiamata

    [PHP]function thumbnail_home()

    {
        $args = array(
          'posts_per_page' => '1',
          'meta_query' => array(
            array(
              'key' => 'img_evidenza',
              'value' => 'si',
            ) ,
          ) ,
        );
        $featured_post = new WP_Query($args);
    
        while ($featured_post->have_posts()):
        $featured_post->the_post(); ?>
        
        <?php
        $img = content_url().'/nome_cartella/'; 
        $path = $img.'.png';
        ?>
        
        <a href="<?php the_permalink(); ?>"><?php $img('img_evidenza');?></a>
       
       <?php endwhile;
        wp_reset_query();
    

    }[/PHP]

    il problema e che non saprei come richiamare il nome dell'immagine, spero in un aiuto grazie:)


  • User Attivo

    Ciao, praticamente invece di un'immagine thumbnails vuoi richiamare solo una immagine all'interno del link?


  • User

    si l'immagine e il relativo link dell'articolo a cui e settato il campo


  • User Attivo

    Scusami ma non ti seguo, vuoi richiamare l'immagine in evidenza dell'articolo oppure un'immagine uguale per tutti gli articoli? Perchè per la prima puoi usare la funzione the_post_thumbnail


  • User

    @all2aller said:

    Scusami ma non ti seguo, vuoi richiamare l'immagine in evidenza dell'articolo oppure un'immagine uguale per tutti gli articoli? Perchè per la prima puoi usare la funzione the_post_thumbnail

    scusami forse non mi sono ben spiegato allora l'immagine che io devo inserire ha una risolzione di 1004x340 se io la inserisco come immagine in evidenza dell'articolo e poi la vado a richiamare accade che nella home vedrò l'immaggine nella sua risoluzione ma nell'articolo l'immagine non si verdà a pieno ma viene rimpicciolita e quindi non si vedà correttamente

    Per questo volevo creare una cartella in wp_content dove inserire le immagini con dimensione 1004x340 che vengono visualizzate solo nella home e invece fare una immagine più piccola da inserire come immagine in evideza dell'articolo, in pratica dividendo le due cose, spero di essermi spiegato


  • User Attivo

    Ok ora ho capito, allora non ti serve fare quello. Basta che aggiungi una dimensioni alla thumbnail del post, devi inserire nel function.php del tuo tema questa stringa:

    [PHP]
    add_image_size( 'mia_immagine', 158, 158, true );
    [/PHP]

    Poi puoi richiamare l'immagine con:

    [PHP]
    <?php the_post_thumbnail('mia_immagine'); ?>
    [/PHP]


  • User

    Grazie Mille, non ci avevo proprio pensato