Supporto » Varie ed eventuali » html non eseguito

  • So che questa è una domanda da novellino, quindi chiedo scusa in anticipo e vio prego di non insultarmi troppo.
    Perchè il seguente codice in una pagina viene solo mostrato, ma non eseguito?

    <p>
    <?php $current_user = get_current_user(); ?>
    Clicca <a href="http://example.com/pippo/private-page/<?php echo $current_user->ID; ?>" qui</a> per pagina personale
    </p>

    L’idea è di indirizzare l’utente (già loggato) alla sua pagina personale, dalla pagina contenente le info generali del suo gruppo di appartenenza…
    installaazione di prova, tema Twenty-TwentyOne, versione wp 5.8.1
    Grazie

Stai visualizzando 9 risposte - dal 1 al 9 (di 9 totali)
  • Ciao Roberto,

    Grazie per aver aperto un thread su WordPress.org. Sono Matteo, piacere di conoscerti.

    Usando snipboard.io, per favore, caricami uno screenshot dell’editor in cui si veda esattamente dove hai inserito questo codice e poi invia qui il link, così posso darci un occhio. Tieni conto comunque che il problema potrebbe essere alleviato rimuovendo i “p” del tuo codice. Probabilmente potrebbero far confondere il sistema.

    Attendo il tuo screenshot.

    Un saluto,
    Matteo

    Chi ha creato la discussione roberto21

    (@roberto21)

    Sono andato un po’ avanti, ma non ho ancora risolto (o capito). Ti ringrazio dell’interesse, spero siano questi i link che ti servono.
    Mi sembra di capire che il codice php non venga riconosciuto, ma potrei sbagliare. Pare che
    1) non vedo il primo “echo…”
    2)nella url, il codice php è rimasto tale e quale.


    Grazie ancora.

    Ciao @roberto21 ,
    Non è possibile inserire codice php direttamente dentro un articolo. Viene “sterilizzato” e reso come testo. Già sono tante le personalizzazioni di wp che sono poco sicure – quasi sempre per la mancanza di filtraggio prima di esaminare $_GET o $_POST – pensa cosa succederebbe inserendo direttamente codice dagli articoli !!!

    Per ottenere il risultato che vuoi credo sarebbe opportuno utilizzare un plugin apposito PHP Everywhere ad esempio. Oppure scrivere un plugin dedicato.

    Un saluto!

    Chi ha creato la discussione roberto21

    (@roberto21)

    Avevo questo sospetto, e ho provato ad usare Insert PHP Code Snippet, che penso sia simile a php everywhere, nel senso che crea shortcode a partire dal codice php. Il fatto è che non sembra funzionare: inserendo lo shortcode al posto del codice e cliccando “Update”, tutto si ferma e “updating” rimane fisso senza riuscire ad andare avanti, fino a che non rinuncio e torno indietro. Proverò anche php everywhere, ma in ogni caso come posso inserire uno shortcode dentro una url?

    luca21

    (@luca21)

    Ciao @roberto21 ,

    ma in ogni caso come posso inserire uno shortcode dentro una url?

    Direi che è impossibile. Il modo regolare di inserire uno shortcode è quello di usare l’ apposito blocco Gutemberg “Aggiungi uno shortcode”.
    Ho fatto una prova.
    – scaricato e installato il plugin insert php code snippet

    – Impostato uno snippet col nome insertPHPtest1 e contenuto <?php echo ' <p>WP è il CMS più usato </p>'; ?> Ci sono anche accenti, come vedi, che potrebbero essere critici.

    – inserito in una pagina, mediante un blocco Gutemberg, lo shortcode [xyz-ips snippet="insertPHPtest1"]

    Bene, funziona come dovrebbe.

    Adesso non ho idea di che codice php tu debba inserire, è una cosa che spetta a te.

    Saluto!

    luca21

    (@luca21)

    ciao @roberto21 ,

    ma in ogni caso come posso inserire uno shortcode dentro una url?

    Bisogna costruire l’url direi.
    Salvo errori il tuo snippet php potrebbe essere una cosa di questo genere:

     $current_user = get_current_user_id();
    $url = 'http://example.com/pippo/private-page/' . $current_user;
    
    $toBW = <<<EOF
    <p>  <a href="{$url}"> Clicca qui </a> </p>
    EOF;
    
    echo $toBW; 
    Chi ha creato la discussione roberto21

    (@roberto21)

    Mi scuso del ritardo. Sono finalmente riuscito a provare lo snippet che mi hai gentilmente suggerito, ma c’è qualcosa che non va. Nella pagina dove ho inaserito lo short code generato dal plugin “Insert PHP Code Snippet” compare “Clicca qui” ma lo url cui punta è

    http://example.com/pippo/private-page/7

    cioè con “7” al posto dell’userid, per cui ovviamente la pagina risulta “non trovata”. Magari è una stupidata, ma come principiante non ci arrivo. Grazie della paziente assistenza

    Ciao @roberto21 ,

    Temo che “7” sia proprio ciò che, internamente, wp ritiene sia l’ ID dell’User.
    L’ User è un oggetto con tantissime proprietà: tutto ciò che il sito conosce dell’ User più le sue possibilità di intervento amministrativo, i suoi permessi ( capabilities ).

    Per vederle in dettaglio si può ricorrere ad un altro snippet:

    <?php
    $curUser = wp_get_current_user();
    
    echo '<br> User ID = ' .  $curUser->ID;
    echo '<br>';
    
    var_dump($curUser);
    
    exit;
    ?>

    Escono decine di linee. Bisogna controllare se c’è anche la proprietà che ti serve per costruire l’url.

    Url che andrà costruito con un codice leggermente diverso. Cioè adoperando la funzione di wp “wp_get_current_user()”

    $curUser = wp_get_current_user();

    e poi nella costruzione dell’ Url
    $url = 'http://example.com/pippo/private-page/' . $curUser->TuaScelta

    ad esempio se la proprietà giusta è la “user_login” il tuo url diventa:

    $url = 'http://example.com/pippo/private-page/' . $curUser->user_login

    Attenzione che potrebbe essere necessario aggiungere all’ url anche uno slash finale / e che si tratta pur sempre di un permalink con tutte le caratteristiche dei permalink.

    Prima di mettere davvero in produzione la cosa bisognerebbe almeno aggiungere qualche altra riga per evitare errori se nessun user è loggato.

    Buon lavoro!

    Chi ha creato la discussione roberto21

    (@roberto21)

    OK, dal VarDump direi che la proprietà che mi serve è proprio user_login, che contiene il nome dell’utente (nel mio caso cuser01. Quindi ho modificato lo snippet come da te suggerito

    $curUser = wp_get_current_user();
    $url = 'http://example.com/pippo/private-page/' . $curUser->user_login
    ...

    e così sembra che funzioni. Grazie mille, vado avanti e troverò sicuramente qualche altro inghippo.Grazie ancora

    • Questa risposta è stata modificata 1 mese, 3 settimane fa da roberto21.
Stai visualizzando 9 risposte - dal 1 al 9 (di 9 totali)
  • Devi essere collegato per rispondere a questo topic.