Visualizzazione risultati 1 fino 30 di 30

Discussione: Accorciare codice php

  1. #1
    Guest

    Predefinito Accorciare codice php

    Ho questi 2 codici, sono identici, cambia solo quella nell'else che ha i 2 puntini prima di /wp-login.php
    Vorrei evitare di tenere 2 codici identici, ma di metterne uno che fa tutto.

    Codice PHP:
    <?php
    if (is_home()) {
    $output = '© 2016-'.(new DateTime('now', new DateTimeZone('Europe/Rome')))->format('Y').' AlbenessereBlog - Powered by <a class ="info" href="https://it.wordpress.org" target="_blank">WordPress</a> - <a class ="info" href="https://themezee.com/themes/donovan" target="_blank">Donovan original theme</a>
    - <a class ="info" href="informativa-privacy">Informativa privacy</a> - <a class ="info" href="wp-login.php">Area amministratore</a>'
    ;
    echo
    $output;
    }
    else {
    $output = '© 2016-'.(new DateTime('now', new DateTimeZone('Europe/Rome')))->format('Y').' AlbenessereBlog - Powered by <a class ="info" href="https://it.wordpress.org" target="_blank">WordPress</a> - <a class ="info" href="https://themezee.com/themes/donovan" target="_blank">Donovan original theme</a>
    - <a class ="info" href="informativa-privacy">Informativa privacy</a> - <a class ="info" href="../wp-login.php">Area amministratore</a>'
    ;
    echo
    $output;
    }
    ?>

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    I due punti indicano cartella padre (precedente), is_home può significare http://www.example.com/index.php (else che significa altrimenti) http://www.example.com/nome-articolo/ dunque tornare su di un livello (vedere) correttamente wp-login.php devi togliere la cartella precedente. In sintesi usa Protocol-relative URLs che supporta http o https (se supportato dal browser, se non troppo vecchio lo supportano) questo protocol relative //www.example.com/wp-login.php
    Ultima modifica di darbula : 04-10-2021 alle ore 20.28.14

  3. #3
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Codice PHP:
    <?php
    printf
    (
    '© 2016-%s AlbenessereBlog - Powered by <a class ="info" href="https://it.wordpress.org" target="_blank">WordPress</a> - <a class ="info" href="https://themezee.com/themes/donovan" target="_blank">Donovan original theme</a> - <a class ="info" href="informativa-privacy">Informativa privacy</a> - <a class ="info" href="%s">Area amministratore</a>',
    (new
    DateTime('now', new DateTimeZone('Europe/Rome')))->format('Y'),
    is_home() ? 'wp-login.php' : '../wp-login.php'
    );
    ?>
    Ma sarebbe preferibile utilizzare URL relativi alla root del sito, se possibile.
    Ultima modifica di mzanella : 04-10-2021 alle ore 14.46.34

    I suggerimenti che do più spesso:


  4. #4
    Guest

    Predefinito

    Funziona, perché dici che sarebbe preferibile andare alla vecchia?

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Perché per il momento hai la "fortuna" di avere solo due livelli possibili, quindi te la cavi con un singolo if per capire se usare la versione base o quella con i due punti. Se un domani il sito venisse esteso e i livelli diventassero 10, dovresti aggiungere altri 9 if.
    Oppure potresti avere condizioni più complicate da verificare.
    O potresti utilizzare un framework di routing che ti costringerebbe a modificare manualmente gli URL.

    Nessuno di questi problemi si pone usando un URL relativo alla root del sito. Per contro, i problemi che potresti avere con quest'ultimo li avresti anche col metodo che stai usando attualmente. Quindi è strettamente migliore.

    Per curiosità, come mai lo definisci "alla vecchia"?

    I suggerimenti che do più spesso:


  6. #6
    Guest

    Predefinito

    Per "alla vecchia" intendevo come facevo io. Ma allora com'è se usassi URL relativo alla root?

  7. #7
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Codice PHP:
    <?php
    echo '© 2016-'
    . (new DateTime('now', new DateTimeZone('Europe/Rome')))->format('Y')
    .
    ' AlbenessereBlog - Powered by <a class ="info" href="https://it.wordpress.org" target="_blank">WordPress</a> - <a class ="info" href="https://themezee.com/themes/donovan" target="_blank">Donovan original theme</a> - <a class ="info" href="informativa-privacy">Informativa privacy</a> - <a class ="info" href="/wp-login.php">Area amministratore</a>';
    ?>
    Quindi usando semplicemente /wp-login.php come URL, e senza if.

    I suggerimenti che do più spesso:


  8. #8
    Guest

    Predefinito

    Così non funziona, mostra questo:

    Not Found

    The requested URL was not found on this server.

  9. #9
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Era un esempio, l'URL deve essere quello giusto, che io non conosco .

    I suggerimenti che do più spesso:


  10. #10
    Guest

    Predefinito

    Si, ma io l'url non lo voglio mettere, quindi uso il tuo codice precedente.

  11. #11
    Guest

    Predefinito

    Però ho notato una cosa: ho messo il tuo primo codice anche nel mio secondo sito che però ha anche i tag e qui non funziona, quindi questo sarebbe un terzo livello?

  12. #12
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Si, ma io l'url non lo voglio mettere, quindi uso il tuo codice precedente.
    Anche quello usa URL relativi. Non puoi creare un link senza un URL di un qualche tipo.

    Però ho notato una cosa: ho messo il tuo primo codice anche nel mio secondo sito che però ha anche i tag e qui non funziona, quindi questo sarebbe un terzo livello?
    Dipende da come è stato gestito, da questa descrizione sembra di sì.

    I suggerimenti che do più spesso:


  13. #13
    Guest

    Predefinito

    Beh, io vorrei un codice che mi funziona in qualunque pagina articolo, tag, categorie.

  14. #14
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Questo è solamente relativo al protocollo http o https e mostrerà sempre la pagina corretta. https://forum.it.altervista.org/php-...ml#post1475397
    Generalmente l'url del sito di login è http://www.example.com/wp-login.php o se sottocartella http://www.example.com/cartella/wp-login.php dunque dipende dalla url il valore pagina di login del sito nel caso di più installazioni.
    Se WordPres installazione in root //www.example.com/wp-login.php se WordPress installazione nella cartella di nome cartella //www.example.com/cartella/wp-login.php giustamente va racchiuso in href.
    Ultima modifica di darbula : 04-10-2021 alle ore 20.26.22

  15. #15
    Guest

    Predefinito

    Se questa parte fa fare login a tutte le pagine e articoli, se modifichiamo questo codice posso fare login anche dai tag visto che è solo da li che mi da errore 404 pagina non trovata.
    Oppure rimuovere "tag" dall'URL, ma non trovo il modo con Yoast SEO, cosa che invece ho fatto con le categorie.

    Codice PHP:
    printf(
    ...
    is_home() ? 'wp-login.php' : '../wp-login.php'
    );
    Spiegami anche quei 2 %s messi in 2 punti diversi e che hanno funzioni diverse pur essendo lo stesso simbolo.
    Ultima modifica di fotoebenessere : 05-10-2021 alle ore 07.22.53

  16. #16
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Beh, io vorrei un codice che mi funziona in qualunque pagina articolo, tag, categorie.
    Si, ma io l'url non lo voglio mettere, quindi uso il tuo codice precedente.
    Quello è il metodo, o lo vuoi o non lo vuoi: deciditi !

    Spiegami anche quei 2 %s messi in 2 punti diversi e che hanno funzioni diverse pur essendo lo stesso simbolo.
    La funzione è la medesima, quella di placeholder (per una stringa). printf, che sta per print formatted accetta come primo argomento una stringa che definisce un formato. In essa posso comparire segnaposto ([i]placeholder[/]) come %s che verranno sostituiti con gli altri argomenti passati alla funzione, in questo caso la data e l'URL della pagina. %s è per le stringhe, ci sono anche %d per gli interi, %f per i numeri in virgola mobile, ciascuno offre anche diverse opzioni, per esempio mostrare solo una certa quantità di decimali.

    I suggerimenti che do più spesso:


  17. #17
    Guest

    Predefinito

    Questo codice mi va bene, ho notato che se al posto dei 2 puntini metto l'url del sito, il redirect funziona anche se sono nella pagina dei tag, ma non voglio usare l'url, piuttosto meglio mettere un codice php che richiama l'url del sito.

    Codice PHP:
    <?php
    printf
    (
    '© 2004-%s Foto&Benessere - Powered by <a class ="links-info" href="https://it.wordpress.org" target="_blank">WordPress</a> - <a class ="links-info" href="https://www.themehorse.com/themes/wp-portfolio" target="_blank">WP-Portfolio original theme</a> - <a class ="links-info" href="informativa-privacy">Informativa privacy</a>
    - <a class ="links-info" href="%s">Area amministratore</a>'
    ,
    (new
    DateTime('now', new DateTimeZone('Europe/Rome')))->format('Y'),
    is_home() ? 'wp-login.php' : '../wp-login.php'
    );
    ?>
    Per quanto riguardo il codice %s non ho ancora capito. Come fa a sapere che deve richiamare l'anno corrente e poi il link Area amministratore? Non capisco il collegamento che ha con entrambi.

  18. #18
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Questo codice mi va bene, ho notato che se al posto dei 2 puntini metto l'url del sito, il redirect funziona anche se sono nella pagina dei tag, ma non voglio usare l'url, piuttosto meglio mettere un codice php che richiama l'url del sito.
    Fai bene, usare un URL assoluto non è mai l'idea migliore. L'idea del codice PHP che lo restituisce è leggermente meglio, ma continuo a non capire perché non utilizzare un URL relativo alla root, quello nella forma /wp-login.php. Chiaramente bisogna capire quale sia l'URL corretto da usare, ma una volta capito è la soluzione migliore e più semplice.

    Per quanto riguardo il codice %s non ho ancora capito. Come fa a sapere che deve richiamare l'anno corrente e poi il link Area amministratore? Non capisco il collegamento che ha con entrambi.
    Sono gli altri parametri che passi alla funzione:
    Codice PHP:
    printf(
    'Data: %s, URL: %s',
    date('Y-m-d', time()),
    is_home() ? 'wp-login.php' : '../wp-login.php'
    );
    Il primo %s viene sostituito col primo parametro dopo la stringa di formato, ovvero date('Y-m-d', time()). Il secondo %s viene sostituito col secondo argomento dopo la stringa di formato, ovvero is_home() ? 'wp-login.php' : '../wp-login.php'.
    In entrambi i casi le espressioni vengono valutate prima di essere sostituite: nel caso della data viene calcolato il timestamp e passato alla funzione di formattazione date, nell'altro viene invocata is_home e, in base al valore di verità, l'espressione viene ridotta alla stringa wp-login.php o ../wp-login.php, che viene quindi usata per la sostituzione nella stringa di formato.

    I suggerimenti che do più spesso:


  19. #19
    Guest

    Predefinito

    Può andar bene l'URL relativo alla root, quello nella forma /wp-login.php purché funzioni anche nei tag.

    Ti chiedevo un codice PHP che restituisce l'URL della home, perché ho notato che un altro link mi da errore 404 quando sono nei tag, è questo: <a class ="info" href="informativa-privacy">Informativa privacy</a>

  20. #20
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ti chiedevo un codice PHP che restituisce l'URL della home, perché ho notato che un altro link mi da errore 404 quando sono nei tag, è questo: <a class ="info" href="informativa-privacy">Informativa privacy</a>
    Una volta risolto l'URL relativo alla root, si può applicare anche qui.

    Può andar bene l'URL relativo alla root, quello nella forma /wp-login.php purché funzioni anche nei tag.
    Sì, uno dei vantaggi è che è indipendente dal "livello" in cui ti trovi. Quindi vediamo di sistemarlo
    Inserendo un link <a href="/wp-login.php">link</a>, questo come viene risolto? C'è una pagina online in cui poterlo vedere in azione?
    Magari basta inserire
    Codice:
    RewriteEngine On
    RewriteBase /
    nel file .htaccess.

    I suggerimenti che do più spesso:


  21. #21
    Guest

    Predefinito

    Funziona dappertutto meno che nei tag: https://fotoebenessere.altervista.org
    Quei 2 codici li ho già in .htaccess

  22. #22
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Strano: puoi mostrare il relativo codice aggiornato?

    I suggerimenti che do più spesso:


  23. #23
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Strano: puoi mostrare il relativo codice aggiornato?
    Codice PHP:
    <?php
    printf
    (
    '© 2004-%s Foto&Benessere - Powered by <a class ="links-info" href="https://it.wordpress.org" target="_blank">WordPress</a> - <a class ="links-info" href="https://www.themehorse.com/themes/wp-portfolio" target="_blank">WP-Portfolio original theme</a>
    - <a class ="links-info" href="informativa-privacy">Informativa privacy</a> - <a class ="links-info" href="%s">Area amministratore</a>'
    ,
    (new
    DateTime('now', new DateTimeZone('Europe/Rome')))->format('Y'),
    is_home() ? 'wp-login.php' : '../wp-login.php'
    );
    ?>

  24. #24
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Se nel tuo browser vedi con cartella/ sei un livello superiore alla tua root, o calcoli in php oppure imposti url assoluto o relativo al protocollo.
    Puoi fare l'esempio della url dei tag?
    Puoi fare l'esempio a quale percorso corrisponde wp-login.php?
    (Copia l'output della tua barra degli indirizzi una volta cliccatoci in href o altrimenti direttamente dalla barra degli indirizzi per il scondo caso che ti ho proposto e si tratta di wp-login.php).
    Ultima modifica di darbula : 05-10-2021 alle ore 11.55.14

  25. #25
    Guest

    Predefinito

    Per le url dei tag basta guardare la colonna sinistra che ci sono i tag, ci clicchi sopra a uno qualsiasi e una volta aperta la pagina clicchi Area amministratore e da errore 404.

  26. #26
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Citazione Originalmente inviato da fotoebenessere Visualizza messaggio
    Codice PHP:
    <?php
    printf
    (
    '© 2004-%s Foto&Benessere - Powered by <a class ="links-info" href="https://it.wordpress.org" target="_blank">WordPress</a> - <a class ="links-info" href="https://www.themehorse.com/themes/wp-portfolio" target="_blank">WP-Portfolio original theme</a>
    - <a class ="links-info" href="informativa-privacy">Informativa privacy</a> - <a class ="links-info" href="%s">Area amministratore</a>'
    ,
    (new
    DateTime('now', new DateTimeZone('Europe/Rome')))->format('Y'),
    is_home() ? 'wp-login.php' : '../wp-login.php'
    );
    ?>
    Ecco, non stai usando URL relativi alla root, bensì relativi al percorso corrente. Modifica (l'ultima riga) in
    Codice PHP:
    <?php
    printf
    (
    '© 2004-%s Foto&Benessere - Powered by <a class ="links-info" href="https://it.wordpress.org" target="_blank">WordPress</a> - <a class ="links-info" href="https://www.themehorse.com/themes/wp-portfolio" target="_blank">WP-Portfolio original theme</a>
    - <a class ="links-info" href="informativa-privacy">Informativa privacy</a> - <a class ="links-info" href="%s">Area amministratore</a>'
    ,
    (new
    DateTime('now', new DateTimeZone('Europe/Rome')))->format('Y'),
    '/wp-login.php'
    );
    ?>
    e vediamo come viene risolto.

    I suggerimenti che do più spesso:


  27. #27
    Guest

    Predefinito

    Peggio, da questo errore su tutto

    Not Found

    The requested URL was not found on this server.

  28. #28
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Nel sito vedo ancora il vecchio comportamento, serve invece vedere il problema in azione per poterlo risolvere.

    I suggerimenti che do più spesso:


  29. #29
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Nel sito vedo ancora il vecchio comportamento, serve invece vedere il problema in azione per poterlo risolvere.
    L'avevo testato su quello locale. Prova adesso col nuovo codice, a me non da più errore nei tag. Lo da solo su Informativa privacy.

    Aggiornamento: ora funziona anche Informativa privacy nei tag, ho messo la barra davanti
    Codice PHP:
    href="/informativa-privacy">Informativa privacy</a>
    In locale per farlo funzionare devo mettere l'url completo.
    Ultima modifica di fotoebenessere : 05-10-2021 alle ore 15.54.00

  30. #30
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ben fatto!
    Probabilmente in locale hai una diversa configurazione della root.

    I suggerimenti che do più spesso:


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •