2012-08-27 27 views
5

Tôi đang cố gắng xây dựng một tính năng trong chủ đề của mình dựa trên việc làm trước khi các tiêu đề được gửi đi. Vì vậy, tự nhiên tôi nối vào móc Init như vậy:Phiên bản chỉ kết thúc trước của Init hook?

add_action('init', 'my_function'); 

Nhưng vấn đề là tôi chỉ muốn my_function chạy nếu người dùng không nhìn vào phần quản trị hoặc trang đăng nhập.

Vì vậy, hook nào tôi có thể sử dụng chỉ là front-end nhưng được chạy trước khi các tiêu đề được gửi đi. Looking at the API reference, dường như không có bất kỳ điều gì, và rõ ràng là các điều kiện không hoạt động sớm trong thời gian chạy.

Vì vậy, ngoài việc tìm kiếm URL cho/wp-admin/và/wp-login/(điều này có vẻ khó khăn với tôi), tôi không thể hiểu được.

Trả lời

2

Đây là cách tôi thực hiện. Sử dụng móc hành động wp là đủ trễ để cung cấp quyền truy cập vào truy vấn và do đó có điều kiện, nhưng vẫn xảy ra trước khi mẫu được thiết lập.

<?php 
function my_function() { 
    if (! is_admin() && ! is_login_page()) { 
     // Enqueue scripts, do theme magic, etc. 
    } 
} 

add_action('wp', 'my_function'); 

function is_login_page() { 
    return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php')); 
} 

Edit: tôi hiểu lầm những gì bạn có nghĩa là bởi tiêu đề (Tôi đã suy nghĩ về wp_head ... quá nhiều chủ đề mã hóa thời gian gần đây!). Tôi hiện đang giả sử bạn đang cố gắng đánh bại hành động send_headers:

function my_function() { 
    if ('index.php' == $GLOBALS['pagenow']) { 
     // Pre-header processing on the front-end 
    } 
} 

add_action('wp_loaded', 'my_function'); 

Nó không siêu thanh lịch, nhưng ít nhất nó ngắn gọn. Và it seems likely it will continue to work, luôn là tin tốt.

+0

WP được gọi sau khi tiêu đề được gửi đi, vì vậy nó sẽ không hoạt động cho những gì tôi đang cố gắng làm. –

6

Tổng kết móc và chức năng của hành động của bạn trong một if(!is_admin()){}

Giống như vậy:

if(!is_admin()) { 
    //Style 
    add_action('init', 'style'); 

    function style() 
    { 
     wp_enqueue_style('style', THEMEROOT . '/css/your.css'); 
    } 
} 
1

đây là một số giải pháp tốt và mát mẻ, hy vọng tất cả các bạn sẽ thích nó.

function my_func(){ 
if (!is_admin()) 
{ 

// add code here for show only in front-end or create another function outside this block and call that function here. 
} 
else 
{ 
// add code here for show only in admin or create another function outside this block and call that function here. 
}}add_action ('init', 'my_func'); 

đó là tất cả, sử dụng và xem sự kỳ diệu.

Các vấn đề liên quan