Гачок для публікації та завантаження сторінки


17

Мені потрібно запустити функцію під час завантаження певної публікації чи сторінки. Чи є якийсь гак, який дозволяє мені перевірити, чи відображається повідомлення під час завантаження сторінки?


громадська чи адміністративна сторона / стикається?
кайзер

Для переднього кінця. В основному я хочу, щоб він запускався лише тоді, коли відображається певний окремий тип публікації.
Poulomi Nag

Відповіді:


24

Ви можете використовувати wpгачок і перевірити global $wp_queryоб’єкт або будь-який умовний.

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 )
    );
}

Дивіться: wpу codex.wordpress.org та wpв developer.wordpress.org


Ви можете мені сказати, коли працює "wp" гачок?
Poulomi Nag

A) Вона працює до after_setup_themeі setup_themeтому доступна лише для плагінів B) всередині WP :: main(), які викликаються зсередини wp-settings.php.
кайзер

1
@kaiser Чи не гакає wpгачок після after_setup_themeгачка та прямо перед template_redirectтим, як зробити wpдоступними за темами та плагінами? (просто для уточнення?)
Адам

13

Використовуйте, template_redirectщо є гачком дії, який спрацьовує перед візуалізацією шаблону;

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

@PoulomiNag Немає проблем, радий, що ви знайшли свою відповідь вище. Хоча я думаю, що одна невелика примітка полягає в тому, що вона wpпрацює за after_theme_setupгаком, тому її не просто доступні плагінами, що робить її безпечною для використання в темах.
Адам

Я щойно перевірив і так; wpбіжить після after_theme_setup. Але мені це потрібно для мого плагіна. Так wpсамо як template_redirectі обидва мені добре працюють. Хочеться, я міг би тут прийняти дві відповіді! :)
Poulomi Nag

Це добре, не потрібно приймати обох, просто хотіли уточнити порядок, у якому вони ведуть вогонь. Переконайтесь, що ви не з глузду знаєте. Удачі з вашим плагіном ...
Адам,

1

Я досить часто використовував наступне для завантаження у спеціальні метаполе на сторінки (а не на власні пости).

    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');

            }
        }
    }

Дякую Дарронц. Але мені потрібен гачок, щоб працювати на передньому кінці під час завантаження сторінки. Якісь ідеї?
Poulomi Nag

Якщо ви змінили вищезазначене, to add_action('init', // etc)воно буде працювати на завантаженні сторінки, а не тільки в розділі адміністратора.
darronz

2
@darronz І тоді потрібно перевірити ! is_admin()всередині, адже initгачок працює з обох сторін.
кайзер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.