6
add_filter('wp_list_pages_excludes', 'gr_wp_list_pages_excludes');

function gr_wp_list_pages_excludes($exclude_array) {    
    $id_array=$array('22');
    $exclude_array=array_merge($id_array, $exclude_array);
    return $exclude_array;
}

私はワードプレスの初心者です。上記のコードは正常に機能します。ただし、$mu_cust_argなどの追加の引数を関数gr_wp_list_pages_excludesに渡す必要があります。apply_filtersまたは他のメソッドを介してそれをどのように利用できますか?どんな助けでも大歓迎です。

前もって感謝します。

4

3 に答える 3

5

WP はクロージャーをコールバックとして受け入れないため (少なくとも、確かに ではありませんadd_filter())、短い答えは「できません」です。少なくとも、きちんとした方法ではありません。

ここには、何をしているかに応じて、いくつかのオプションがあります。最初のものが最適ですが、使用できない場合があります。

関数を呼び出すラッパー関数を作成します

function gr_wp_list_pages_excludes_1 ($exclude_array) {
  $custom_arg = 'whatever';
  gr_wp_list_pages_excludes_1($exclude_array, $custom_arg)
}

これは、特定の状況で常に同じカスタム引数を渡す場合にのみ機能します。異なる状況ごとにこれらのラッパー関数のいずれかを記述し、ラッパー関数の名前を に渡しますadd_filter()。または、本当に動的にしたい場合は、次のことが必要になります...

グローバル変数を使用します: (参照:変数のスコープ, )$GLOBALS

function gr_wp_list_pages_excludes($exclude_array) {
    global $gr_wp_list_pages_excludes_custom_arg;
    $id_array=$array('22');
    $exclude_array=array_merge($id_array, $exclude_array);
    return $exclude_array;
}

$gr_wp_list_pages_excludes_custom_argこのアプローチを使用すると、グローバル スコープで割り当てることにより、任意のデータを関数に渡すことができます。これは、コードが乱雑で判読不能になり、メモリ空間に余分な変数が散らばったままになるため、一般的に悪い習慣と見なされ、ひどく眉をひそめられます。衝突を避けるために、変数名を非常に長く関数に固有のものにしたことに注意してください。これは、グローバル変数を使用する際の別の問題です。これは機能しますが、絶対に必要な場合にのみ使用してください。

于 2012-08-01T06:25:10.170 に答える