Как редактировать функцию на дочернюю тему? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть эта функция в основной теме function.php:

if(!function_exists('eagle_booking_append_booking_button_menu') && eagle_booking_get_option('eagle_booking_header_button')):

    add_filter( 'wp_nav_menu_items', 'eagle_booking_append_booking_button_menu', 12, 2 );

    function eagle_booking_append_booking_button_menu ( $items, $args ) {

        // BUTTON ACTION BASED ON BOOKING SYSTEM
        if (eagle_booking_get_option('booking_type') == 'builtin' ) {
          $eagle_booking_button_action  = eagle_booking_search_page();

        } elseif (eagle_booking_get_option('booking_type') == 'custom') {
          $eagle_booking_button_action = eagle_booking_get_option('booking_type_custom_action');

        } elseif (eagle_booking_get_option('booking_type') == 'booking') {
          $eagle_booking_button_action = eagle_booking_get_option('booking_type_booking_action');

        } elseif (eagle_booking_get_option('booking_type') == 'airbnb') {
          $eagle_booking_button_action = eagle_booking_get_option('booking_type_airbnb_action');

        } elseif (eagle_booking_get_option('booking_type') == 'tripadvisor') {
          $eagle_booking_button_action = eagle_booking_get_option('booking_type_tripadvisor_action');
        }

        if ((eagle_booking_get_option('eagle_booking_header_button')) && ( $args->theme_location == 'zante_main_menu' )) {
            $items .= '<li class="menu_button"><a href="'.$eagle_booking_button_action.'" class="button"><i class="fa fa-calendar"></i>'.esc_html__('BOOK ONLINE', 'eagle-booking').'</a></li>';
        }

        return $items;
    }

endif;

Я хочу отредактировать последнюю часть функции, например:

if ((eagle_booking_get_option('eagle_booking_header_button')) && ( $args->theme_location == 'zante_main_menu' )) {
    $mdpLinkButton = "/contact-us/";
    $items .= '<li class="menu_button"><a href="'.$mdpLinkButton.'" class="button"><i class="fa fa-calendar"></i>'.esc_html__('CONTACT US', 'eagle-booking').'</a></li>';
}

Я сделал пользовательскую тему.Но что мне делать в этом function.php?Отменить вышеупомянутое или как?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Дочерняя тема functions.php загружается перед родительской темой functions.php, поэтому, если функция родительской темы имеет проверку if ( ! function_exists() ), вы можете переопределить ее с тем же именем функции в дочерних функциях. Php

0 голосов
/ 26 ноября 2018

Для этого сначала необходимо удалить фильтр, примененный родительской темой, а затем снова определить его в дочерней теме следующим образом:

Дочерняя тема functions.php

add_action( 'init', 'remove_my_action');
function remove_my_action() {
    remove_filter( 'wp_nav_menu_items', 'eagle_booking_append_booking_button_menu', 12 );
}

add_filter( 'wp_nav_menu_items', 'child_eagle_booking_append_booking_button_menu', 12, 2 );

function child_eagle_booking_append_booking_button_menu ( $items, $args ) {

    // BUTTON ACTION BASED ON BOOKING SYSTEM
    if (eagle_booking_get_option('booking_type') == 'builtin' ) {
      $eagle_booking_button_action  = eagle_booking_search_page();

    } elseif (eagle_booking_get_option('booking_type') == 'custom') {
      $eagle_booking_button_action = eagle_booking_get_option('booking_type_custom_action');

    } elseif (eagle_booking_get_option('booking_type') == 'booking') {
      $eagle_booking_button_action = eagle_booking_get_option('booking_type_booking_action');

    } elseif (eagle_booking_get_option('booking_type') == 'airbnb') {
      $eagle_booking_button_action = eagle_booking_get_option('booking_type_airbnb_action');

    } elseif (eagle_booking_get_option('booking_type') == 'tripadvisor') {
      $eagle_booking_button_action = eagle_booking_get_option('booking_type_tripadvisor_action');
    }

    if ((eagle_booking_get_option('eagle_booking_header_button')) && ( $args->theme_location == 'zante_main_menu' )) {
$mdpLinkButton = "/contact-us/";
        $items .= '<li class="menu_button"><a href="'.$mdpLinkButton.'" class="button"><i class="fa fa-calendar"></i>'.esc_html__('CONTACT US', 'eagle-booking').'</a></li>';
    }

    return $items;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...