404重定向不起作用

Hi I'm type to make a plugin which shows a page instead of sending a 404 page when on a page that doesn't exist

I know I can edit to 404.php file to do this but i need to fit this in a plugin.

If I remove the if statement then its works on all pages which isn't what I want.
So i put the if(is_404()) statement in but it doesn't seem to work at all now...

    function da_404_redirect()
    {
      if(is_404())
      {      
        query_posts('page_id=2');
        status_header( "200" );
      }
    }
    add_action('init','da_404_redirect');

To redirect, don't hook on init, especially if you use conditional tag like is_404(). Any conditional tag will still return false in init.

USE: template_redirect instead or pre_get_post if you need to change something on the WP_Query

Your action hook may be too soon in the wordpress cycle to know if it is a 404. http://codex.wordpress.org/Plugin_API/Action_Reference/init. Try using a later action hook.

As Nick says above you might be hooking into a late-firing event. In my experience, template_redirect is the best option.