Gancio per caricamento posta e pagina


17

Devo eseguire una funzione quando viene caricato un determinato post o una pagina. Esiste un hook che mi consente di verificare se un post viene visualizzato durante il caricamento della pagina?


lato / lato pubblico o amministrativo?
Kaiser

Per front-end. Fondamentalmente voglio che si attivi solo quando viene visualizzato un singolo tipo di post personalizzato specifico.
Poulomi Nag,

Risposte:


24

È possibile utilizzare l' wphook e controllare l' global $wp_queryoggetto o qualsiasi condizionale.

add_action( 'wp', 'wpse69369_special_thingy' );
function wpse69369_special_thingy()
{
    if (
        'special_cpt' === get_post_type()
        AND is_singular()
    )
        return print "Yo World!";

    return printf(
        '<p>Nothing to see here! Check the object!<br /></p><pre>%s</pre>',
        var_export( $GLOBALS['wp_query'], true )
    );
}

Vedi: wpin codex.wordpress.org e wpin developer.wordpress.org


puoi per favore dirmi quando gira 'wp'?
Poulomi Nag,

A) Funziona prima after_setup_themee setup_theme, quindi, è accessibile solo per i plugin B) all'interno WP :: main(), che viene chiamato dall'interno di wp-settings.php.
Kaiser

1
@kaiser L' wphook non si attiva dopo l' after_setup_themehook e immediatamente prima di template_redirectrenderlo wpaccessibile da temi e plugin? (solo per chiarire?)
Adam,

13

Utilizzare template_redirectquale hook di azione viene attivato prima di eseguire il rendering del modello;

add_action('template_redirect', 'hooker');
function hooker(){
    //I load just before selecting and rendering the template to screen
}

@PoulomiNag Nessun problema, felice di aver trovato la tua risposta sopra. Anche se penso che una piccola nota sia che wpcorre dietro al after_theme_setupgancio, quindi non è solo accessibile dai plugin, rendendolo sicuro da usare nei temi.
Adam,

Ho appena controllato e sì; wpcorre dopo after_theme_setup. Ma ne ho bisogno per il mio plugin. Così wpcome template_redirectentrambi funzionano bene per me. Vorrei poter accettare due risposte qui! :)
Poulomi Nag,

Va bene, non è necessario accettare entrambi, volevo solo chiarire l'ordine in cui sparano. Assicurati che non impazzisca, sai. Buona fortuna con il tuo plugin ...
Adam,

1

Ho spesso usato quanto segue per caricare meta box personalizzate su pagine (piuttosto che post personalizzati).

    add_action('admin_init','how_we_do_it_meta');

    function how_we_do_it_meta() {

        if ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/post.php' ) {

            $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
            $template_file = get_post_meta($post_id,'_wp_page_template',TRUE);

            if ($template_file == 'page-how-we-do-it.php') {

                add_meta_box('how_we_do_it_who-meta', 'Who we work with...', 'how_we_do_it_who', 'page', 'normal', 'high');

                add_action('save_post', 'save_how_we_do_it_meta');

            }
        }
    }

Grazie Darronz. Ma ho bisogno di un gancio per lavorare sul front-end durante il caricamento della pagina. Qualche idea?
Poulomi Nag,

Se hai modificato quanto sopra to add_action('init', // etc), funzionerà sul caricamento della pagina piuttosto che solo nella sezione di amministrazione.
darronz,

2
@darronz E poi devi controllare ! is_admin()dentro, perché il initgancio scorre su entrambi i lati.
Kaiser
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.