Изменение кода Businessx для динамического создания интерактивных значков - PullRequest
0 голосов
/ 26 октября 2018

Я работаю с темой WordPress под названием BusinessX, и у них есть плагин под названием Businessx-extensions, который позволяет им контролировать функции, подобные рассматриваемой сегодня - раздел функций.По сути, это просто сетка иконок.Тем не менее, я хочу, чтобы указанные значки были кликабельными.Итак, я нашел место, где это происходит ...

// Figure
if( ! function_exists( 'bx_ext_item__features_figure' ) ) {
    function bx_ext_item__features_figure( $widget_options ) {
        $show  = $widget_options['show_figure'];
        $type  = $widget_options['figure_type'];
        $icon  = $widget_options['figure_icon'];
        $image = $widget_options['figure_image'];
        $title = $widget_options['title'];
        $format = $output = '';

        switch ( $type ) {
            case 'ft-icon':
                $format = ( $icon != '' ) ? '<figure class="sec-feature-figure"><a href="/"'.$burl.'>%s</a></figure>' : '';
                $output = ( $format != '' ) ? sprintf( $format, businessx_icon( $icon, FALSE, FALSE ) ) : '';
                break;
            case 'ft-image':
                $format = ( $image != '' ) ? '<figure class="sec-feature-figure-img"><img src="%s" alt="image" /></figure>' : '';
                $output = ( $format != '' ) ? sprintf( $format, esc_url( $image ) ) : '';
                break;
        }

        $output = apply_filters( 'bx_ext_item___features_figure', $output, $widget_options );

        if( $show ) {
            echo $output;
        }
    }
}

Итак, я отредактировал строку, которая начинается с $ format = ($ icon! = ..., и добавил в привязку и переменную, которую я объявил вверх моего класса с именем burl .

Предполагается, что Burl устанавливается другой встроенной функцией, которая является частью настройщика. Вот еще одна функция из того же файла.

// Button
    if( ! function_exists( 'bx_ext_item__features_contents_button' ) ) {
        function bx_ext_item__features_contents_button( $widget_options ) {
            $anchor = $widget_options['btn_anchor'];
            $url    = $widget_options['btn_url'];
            $burl = $url;
            $burl = 'beef';
            $target = $widget_options['btn_target'];
            $format = '<a href="%1$s" target="%2$s" class="ac-btn-alt fw-bolder">%3$s</a>';

            $output = sprintf( $format, esc_url( $url ), esc_attr( $target ), esc_html( $anchor ) );
            $output = apply_filters( 'bx_ext_item___features_contents_button', $output, $format, $widget_options );

            if( $anchor == '' ) return;

            echo $output;
        }
    }

Но, судя по всему, я не могу заставить это вернуть либо говядину, либо указанный URL-адрес. Хорошо. Тогда я нашел файл для add_actions ...

    /**
 * Features items
 */
add_action( 'bx_ext_item__features', 'bx_ext_item__features_figure',   10, 1 );
add_action( 'bx_ext_item__features', 'bx_ext_item__features_contents', 20, 1 );

add_action( 'bx_ext_item__features_contents', 'bx_ext_item__features_contents_start',    10, 1 );
add_action( 'bx_ext_item__features_contents', 'bx_ext_item__features_contents_title',    20, 1 );
add_action( 'bx_ext_item__features_contents', 'bx_ext_item__features_contents_excerpt',  30, 1 );
add_action( 'bx_ext_item__features_contents', 'bx_ext_item__features_contents_button',   40, 1 );
add_action( 'bx_ext_item__features_contents', 'bx_ext_item__features_contents_end',     999, 1 );

Ааа, и я застрял. Независимо от того, как я переставляю или перераспределяю их, я никогда не вижу, чтобы якорные ссылки возвращали говядину или указанный URL. Я теряюсь, что еще мне следует попробовать.

Есть мысли? Долгоодин, извини. Спасибо.

1 Ответ

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

URL-адрес задается через настройщик при добавлении новой функции, поэтому он постоянно присутствует и не зависит от каких-либо внешних действий.Используйте:

'<figure class="sec-feature-figure"><a href="'.$widget_options['btn_url'].'">%s</a></figure>'

Однако, если вы измените плагин напрямую, ваши изменения будут перезаписаны при его обновлении.Правильный способ сделать это - переопределить действие в вашей дочерней теме functions.php (они предоставляют одну ).

function bx_ext_custom_item__features_figure($widget_options) {
// Copy the function body with your modifications here
}

// Remove the original function creating the figure
remove_action('bx_ext_item__features', 'bx_ext_item__features_figure');
// Call yours instead
add_action('bx_ext_item__features', 'bx_ext_custom_item__features_figure', 10, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...