php – ¿Cómo crear páginas de error 401, 403 y 500 personalizadas?

Pregunta:

Cuando se encuentra un error 404, se puede usar un archivo de plantilla 404.php para generar un mensaje de error personalizado. Esto se documenta en el artículo Jerarquía de plantillas .

Mi objetivo es crear páginas de error personalizadas para errores 401, 403 y 500. Intenté crear archivos 401.php, 403.php y 500.php en el directorio de mi tema, pero esto no funciona.

¿Cómo puedo crear páginas de error 401, 403 y 500 personalizadas en WordPress?

Respuesta:

Las páginas de error se envían a través de .HTACCESS, si está usando Apache, usaría la directiva ErrorDocument y agregaría el estado y la URL.

Entonces se vería así en su archivo .htaccess:

ErrorDocument 401 http://yourwebsite.com/error-401
ErrorDocument 403 http://yourwebsite.com/error-403
ErrorDocument 500 http://yourwebsite.com/error-500

Puede utilizar la siguiente función a continuación. Esto agregará dinámicamente lo que se necesita al archivo HTACCESS por usted o puede hacerlo manualmente.

1. Agregar páginas:

A continuación, deberá ir a su Panel de control y crear las páginas como cualquier página normal ('Panel de control'> 'Páginas'> 'Nuevo'). Pueden titularse como desee, solo asegúrese de que el slug sea el mismo que en la función siguiente (Slug: error-401, error-403, error-404, error-500). También puede usar la plantilla de página para crear cualquier diseño y estilo que desee para estas páginas específicas. Siga las instrucciones del Codex de WordPress para esto.

2. Agregar función:

// Create Custom Error Pages in WordPress using HTACCESS
function royal_custom_error_pages() {

    // Get HTACCESS path & dynamic website url
    $htaccess_file = '.htaccess';
    $website_url = get_bloginfo('url').'/';

    // Check & prevent writing error pages more than once
    $check_file = file_get_contents($htaccess_file);
    $this_string = '# BEGIN WordPress Error Pages';

    if( strpos( $check_file, $this_string ) === false) {

    // Setup Error page locations dynamically
    $error_pages .= PHP_EOL. PHP_EOL . '# BEGIN WordPress Error Pages'. PHP_EOL. PHP_EOL;
    $error_pages .= 'ErrorDocument 401 '.$website_url.'error-401'.PHP_EOL;
    $error_pages .= 'ErrorDocument 403 '.$website_url.'error-403'.PHP_EOL;
    $error_pages .= 'ErrorDocument 404 '.$website_url.'error-404'.PHP_EOL;
    $error_pages .= 'ErrorDocument 500 '.$website_url.'error-500'.PHP_EOL;
    $error_pages .= PHP_EOL. '# END WordPress Error Pages'. PHP_EOL;

    // Write the error page locations to HTACCESS
    $htaccess = fopen( $htaccess_file, 'a+');
    fwrite( $htaccess, $error_pages );
    fclose($htaccess);

    }
}

add_action('init','royal_custom_error_pages'); // This will run the function everytime, not ideal!

// register_activation_hook( __FILE__, 'royal_custom_error_pages' ); // Using a plugin, runs only once!

¡¡NÓTESE BIEN!! NOTAS SOBRE LA FUNCIÓN ANTERIOR

Al mover su sitio web o cambiar la estructura de la URL

Lo que debe recordar con la función anterior es que, aunque verificará si las directivas ErrorDocument ya existen antes de escribirlas en su archivo HTACCESS, no volverá a escribir las directivas ErrorDocument si cambia o mueve su blog para reflejar las ubicaciones de las páginas actualizadas. Primero deberá eliminar las directivas ErrorDocument existentes en su archivo HTACCESS y luego volver a ejecutar esta función para crear las nuevas directivas.

Corrija el gancho para disparar la función SOLO UNA VEZ

La otra cosa a tener en cuenta es esta función, el uso de la acción init se ejecutará cada vez que se carguen sus páginas, lo cual es súper innecesario y derrochador, por lo que sugeriría agregarlo a un complemento y usar register_activation_hook lugar para que solo se active una vez en la activación del complemento

Permisos de archivos

También es imperativo que su .htaccess se pueda escribir cuando use la función anterior, así que asegúrese de que tenga los permisos de archivo correctos, algo como CHMOD777.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım