kaiser
  • 0
Гуру

Как проверять фильтруемые $vars?

  • 0

Примечание. Это скорее учебник/вики, чем реальный вопрос, и он должен быть ссылкой для последующих вопросов. Если вам есть что добавить, пожалуйста, не стесняйтесь добавлять ответ. Рабочие ответы получают одобрение. 🙂


Сценарий

Вы хотите изменить вывод некоторой функции ядра wp, и вместо того, чтобы изменить ядро ​​напрямую (что всегда плохо), вы нашли такой вызов:

$filterable_var = apply_filters( 'name_of_filter', $filterable_var );

Функция фильтра позволяет изменять, например. $filterable_var и, следовательно, вывод функции wp.

Эта проблема

Вы не знаете, что именно функция хочет получить в качестве входных данных.

Теги

Проверьте, что вы можете изменить.


Возможно связанный вопрос:



[Вы можете добавить сюда свои вопросы.]

Share
  1. @MikeSchinkel @Rarst Я думаю, что это должна быть вики сообщества

    • 0
  2. Пример

    Ходок по навигационному меню — позволяет добавлять, например. css для (всех) пунктов меню.

    // copyied from /wp-core/wp-includes/nav-menu-template.php > line 76 (wp 3.1.1) - start_el() function
    $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
    

    Теперь давайте проверим $var:

    function wpse15319_check_nav_menu_classes( $classes ) 
    {
        // You can take any of the $vars from the core function above: $classes, $item, $args
        echo '<pre>';
            // nice list:
            print_r( $classes ); 
            // or check of what type the $var is
            var_dump( $classes );
        echo '</pre>';
    
        return $classes;
    }
    add_filter( 'nav_menu_css_class', 'wpse15319_check_nav_menu_classes', 10 );
    

    Изменить — пример применения

    function wpse15319_add_nav_menu_classes( $classes ) 
    {
        $classes[] = '';
        $classes[] .= 'my added css classes'; 
    
        return $classes;
    }
    add_filter( 'nav_menu_css_class', 'wpse15319_add_nav_menu_classes', 10 );
    
    • 0

Оставить ответ

You must login to add an answer.