programing

워드프레스 필터에 추가 파라미터를 전달하는 방법은?

minimums 2023. 10. 30. 20:51
반응형

워드프레스 필터에 추가 파라미터를 전달하는 방법은?

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;
}

저는 워드프레스를 처음 접하는 사람입니다.위의 코드는 정상적으로 작동합니다.그러나 gr_wp_list_pages_excluds 함수에 $mu_cust_arg와 같은 추가 인수를 전달해야 합니다.apply_filters 또는 다른 방법으로 사용하려면 어떻게 해야 합니까?어떤 도움이든 감사히 받겠습니다.

미리 감사드립니다.

필터/액션에 여러 개의 인수를 추가할 수 있습니다. WordPress에 예상되는 인수의 수를 알려주면 됩니다.

예를 들어, 작동하지 않습니다.

add_filter('some_filter', function($argument_one, $argument_two) {
    // won't work
}); 

apply_filters('some_filter', 'foo', 'bar'); // won't work

너무 많은 인수가 제공되었다는 오류와 함께 실패합니다.

대신 다음을 추가해야 합니다.

add_filter('some_filter', function($argument_one, $argument_two) {
    // works!
    $arugment_one; // foo
    $arugment_two; // bar
}, 10, 2);  // 2 == amount of arguments expected

apply_filters('some_filter', 'foo', 'bar'); 

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(). 아니면, 진정으로 역동적이기를 원한다면...

전역 변수 사용: (참조: 변수 범위, )

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세계적인 범위에서이것은 일반적으로 잘못된 관행으로 간주되며 심하게 눈살을 찌푸리게 하는데, 이는 지저분하고 읽을 수 없는 코드를 만들고 추가 변수로 메모리 공간을 어수선하게 만들기 때문입니다.변수 이름을 매우 길고 충돌을 피하기 위해 함수에 고유하게 만들었습니다. 전역 변수를 사용할 때의 또 다른 문제입니다.이 방법은 효과가 있겠지만 꼭 사용해야 할 경우에만 사용하십시오.

아주 간단해요!

add_filter('filter_name','my_func',10,3);     //three parameters lets say..
my_func($first,$second,$third){
  //............
}

그리고나서

echo apply_filters('filter_name',$a,$b,$c);

언급URL : https://stackoverflow.com/questions/11753484/how-to-pass-additional-parameter-to-wordpress-filter

반응형