Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Rilevare la pagina di 'chiamata' di un link

    Salve e a tutti.
    Sto scrivendo un plugin per wordpress. Il plugin abilità l'utilizzo di una categoria 'confidential' che viene usata per le comunicazioni interne tra gli sito.
    In sostanza:
    - le informazioni di categoria confidential appaiono nella home della sezione amministrazione, la cosidetta dashboard (/wp-admin/index.php)
    - le informazioni di categoria confidential NON appaiono nella home del bolg (index.php), nè nelle varie pagine (archivi, ecc)
    - la categoria 'confidential' non viene mostrata all'esterno delle pagine di amministrazione.

    Ho implementato 3 filtri che mi consentono di nascondere le notizie confidential, ma ora ho un problema. I filtri filtrano tutto, così nemmeno gli utenti loggati possono vederle.
    Un semplice check dello stato dell'utente non è sufficiente: il mio sito è una rivista digitale, registrata al tribunale, e quindi non mi va che le informazioni interne appaiano nel layout, nemmeno se l'utente è loggato.
    Vorrei invece disabilitare il filtro quando la chiamata proviene dall'homepage admin (wp-admin/index.php); in questo modo le notizie interne si vedranno solo in pagine singole, e mai nel layout della rivista.
    In sostanza dovrei implementare nel filtro:
    SE 1) la chiamata proviene dall'homepage admin
    AND
    2) stai caricanndo una pagina singola NON filtrare
    Mi sapete dire come posso rilevare la condizione 1?
    A seguire le funzioni di filtraggio:

    Codice PHP:
     Filter posts in the Confidential category
    function dbmod_filter_cp_join($join) {
    global 
    $wpdb;
    if (
    strstr($join,"JOIN $wpdb->post2cat ON (is_posts.ID = is_post2cat.post_id)")) {
    return (
    $join);
    } else {
    return (
    $join." LEFT JOIN $wpdb->post2cat ON (is_posts.ID = is_post2cat.post_id)");
    }
    }
    function 
    dbmod_filter_cp_where($where) {
    global 
    $confidential_cat$wpdb;
    return (
    $where." AND $wpdb->post2cat.category_id !='"."$confidential_cat"."'");
    }
    ///
    // HOOKING IN
    add_filter('posts_where''dbmod_filter_cp_where');
    add_filter('posts_join','dbmod_filter_cp_join');

    ?> 
    NB: le funzioni si attaccano a i cosidetti hook di wordpress; in sostanza permettono di aggiungere parti di testo a una queri nella sezione join (nela caso di posts_join) e nella sezione WHERE (nel caso di posts_where)

    Ogni suggerimento è il benvenuto.
    Cordialmente,
    Davide Benini

  2. #2
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Puoi usare $_SERVER["HTTP_REFERER"] per vedere la pagina di provenienza ma è un sistema poco sicuro.

  3. #3
    Ho risolto in una maniera così elementare che mi chiedo come mai non mi fosse venuta in mente prima...
    Ho semplicemente aggiunto un parametro origin al link della pagina di amministrazione ('&origin=admin_page')
    ho implementato una variabile globale $origin$GET['origin']
    ho poi modificato la funzione filtro, disabilitandola 'if $origin=admin_page'.
    Caspita, usare GET quando serve è l'abc del php...
    Grazie comunque,
    Davide
    PS complimenti per l'avatar, chi ha orecchie per intendere...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.