0

WordPress の障害通知ページのスタイルを設定する方法はありますか? ページの例を示す以下のスクリーンショットを見てください。このページは、さまざまな時期にさまざまな理由で作成されています。ページを生成するには、ブラウザーで 2 つのタブを開き、各タブで同じ WordPress サイトにログインします。

1: 開いている最初のタブからサイトからログアウトします。

2: 2 番目のタブからログアウトします。

失敗ページが表示されます。

WordPress 障害通知ページのスクリーンショット

4

2 に答える 2

2

私がとったアプローチは、すべての 'die' メッセージのスタイルを設定するオプションを提供するカスタムの die ハンドラーをセットアップすることでした。

// custom die handler
function get_custom_die_handler() {
    return 'custom_die_handler';
}

// hook the function
add_filter('wp_die_handler', 'get_custom_die_handler' );

// build a custom die handler
function custom_die_handler( $message, $title = '', $args = array() ) {
    // whatever you want the die handler to do
}
于 2013-10-16T14:57:41.977 に答える
0

ファイルに移動/wp-includes/functions.phpして、呼び出された関数を探します

wp_nonce_ays

エラーページを出力する関数です。これは、 のアクションによって呼び出されるコア関数ですcheck_admin_referer。そのアクションにフックしようとすることができます。唯一の問題は、それが呼び出されdieた後であるということです。そのため、トリガーする前に終了するwp_nonce_aysため、使用しても効果がありません。add_actionただし、幸いなことに、check_admin_refererはプラグ可能な関数であるため、関数を作成してオーバーライドすることができます。私たちの関数はcheck_admin_referer、スタイルを設定するために追加のコード行が 1 行追加されていることを除いて、 の正確なコピーになります。関数を保存します。私はそれを styleFailPage.php と呼び、/wp-content/plugins/フォルダーに入れます。

<?php /*
* Plugin Name:Failure Styler
* Description:Adds a style element right before the failure notice is called
*/
if ( ! function_exists( 'wp_logout' ) ) {
function check_admin_referer($action = -1, $query_arg = '_wpnonce') {
        if ( -1 == $action )
                _doing_it_wrong( __FUNCTION__, __( 'You should specify a nonce action to be verified by using the first parameter.' ), '3.2' );

        $adminurl = strtolower(admin_url());
        $referer = strtolower(wp_get_referer());
        $result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce($_REQUEST[$query_arg], $action) : false;
        if ( !$result && !(-1 == $action && strpos($referer, $adminurl) === 0) ) {
//this is the line I added:
echo "<style>body {background:red !important;}</style>";
                wp_nonce_ays($action);
                die();
        }
        do_action('check_admin_referer', $action, $result);
        return $result;
}

}
?>

<style>doctype宣言の上に情報を挿入する必要があるため、これは無効なHTMLになりますが、コアwp_nonce_ays関数を明示的に編集しない限り、これは避けられません

于 2013-10-16T00:42:48.693 に答える