最初の関数の引数を2番目の関数の変数として使用しようとしています. 2 番目の関数 (clauseWhere) には他の引数を指定できないことに注意してください。
function filtrerDuree($time) {
global $theTime;
$theTime = $time;
function clauseWhere($where = '') {
global $theTime;
return $where .= " AND post_date > '" . date('Y-m-d', strtotime('-' . $theTime. ' days')) . "'";
}
add_filter( 'posts_where', 'clauseWhere' );
}
strtotime('-' . $time. ' days')) のように、引数 $time を 2 番目の関数で直接使用することはできませんでした。これは、とにかく最初の関数に対してローカルであるためです。
最初の関数で $time=$time を実行したとしても、2 番目の関数にグローバル $time を配置しても機能しませんでした。
また、最初の関数でグローバルを $theTime に配置する必要がある理由がわかりません...この変数は関数の外には存在しないため、関数の外では変数を使用していません。グローバルに配置しないと機能しません。ただし、2 番目の関数でグローバルに配置する必要があることは理解しています。