2011-05-27 110 views
0

我會顯示一個自定義的錯誤消息。WordPress的:如何顯示自定義錯誤消息在wp_insert_post_data()

function ccl($data, $postarr = '') { 
if($data['post_status'] == "publish"){ 
    $data['post_status'] = "draft"; 
    echo '<div id="my-custom-error" class="error fade"><p>Publish not allowed</p></div>'; 
} 
    return $data; 
} 

add_filter('wp_insert_post_data' , 'ccl' , '99'); 

我試了很多想,但每次成功的消息都來自WordPress的文章發表。我可以殺死成功消息並顯示我自己的錯誤消息嗎?

坦克的幫助......

回答

5

,因爲用戶在此之後立即重定向你不能在wp_insert_post_data過濾器打印錯誤。最好的辦法是掛鉤到重定向過濾器並向查詢字符串添加消息變量(這將覆蓋任何現有的Wordpress消息)。

因此,在您的wp_insert_post_data過濾器功能中添加重定向過濾器。

add_filter('wp_insert_post_data', 'ccl', 99); 
function ccl($data) { 
    if ($data['post_type'] !== 'revision' && $data['post_status'] == 'publish') { 
    $data['post_status'] = 'draft'; 
    add_filter('redirect_post_location', 'my_redirect_post_location_filter', 99); 
    } 
    return $data; 
} 

然後在重定向過濾器函數中添加一個消息變量。

function my_redirect_post_location_filter($location) { 
    remove_filter('redirect_post_location', __FUNCTION__, 99); 
    $location = add_query_arg('message', 99, $location); 
    return $location; 
} 

最後掛鉤到post_updated_messages過濾器並添加您的消息,所以Wordpress知道要打印什麼。

add_filter('post_updated_messages', 'my_post_updated_messages_filter'); 
function my_post_updated_messages_filter($messages) { 
    $messages['post'][99] = 'Publish not allowed'; 
    return $messages; 
} 
相關問題