web-dev-qa-db-ja.com

「manage_users_custom_column」フィルタによって起動される関数が機能していない

カスタム列un users.phpを追加しようとしていますが、空のままです。

私のテーマのfunctions.phpファイルに次のコードでユーザー管理ページに列を追加しました。

function add_user_test_column( $columns ) {
    $columns['test1'] = 'Test';
    return $columns;
} 
add_filter( 'manage_users_columns', 'add_user_test_column' );

このコードを使用して列に何かを追加しようとしましたが、列が空のままです。

function add_test_column_data($v = '', $column_name, $user_id ) {
    if( 'test1' == $column_name ) {
        return 'test'.$column_name.$user_id;
    }
}
add_filter( 'manage_users_custom_column', 'add_test_column_data', 10,3);

このようにエコーへの戻りを変更すると、関数が起動していることがわかります。

function add_test_column_data($v = '', $column_name, $user_id ) {
    if( 'test1' == $column_name ) {
        echo 'test'.$column_name.$user_id;
    }
}

ユーザーテーブルの上部に「テストテストテストテストテストテスト」がエコー表示されているのがわかります。
ご覧のとおり、関数に渡された変数は考慮されていません。また、優先度(add_filter関数の3番目の引数)を10から1に減らしても効果はありません。

だから私の質問は次のとおりです。
この関数からの戻りが機能しないのはなぜですか?
関数に渡された変数が考慮されないのはなぜですか?
これをデバッグするためにどこを見ればいいですか?

私はこれがVanillaのインストールではないことを付け加えるべきです。私はたくさんの拡張機能と10万人以上のユーザーがいるwordpress 3.4.2の複雑なサイトを引き継いだ。 (そして私は以前Wordpressを使ったことがない...)。

ご提案いただきありがとうございます。

キース

3
Keith

私はWP 3.2.1でも同じ問題を抱えています。

プラグイン(User Access Manager)がmanage_users_custom_column filterも呼び出すため、フィルターの競合がありました。

優先順位を変更して問題を解決しました。

add_filter( 'manage_users_custom_column', 'custom_user_column_value', 15, 3 );

それが役立つことを願っています:)

5
Céline Garel