修改Businessx代码以动态创建可点击图标

我正在使用一个名为BusinessX的WordPress主题, 他们有一个名为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="http://www.srcmini.com/"'.$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="http://www.srcmini.com/%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。
【修改Businessx代码以动态创建可点击图标】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="http://www.srcmini.com/%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添加新功能时, 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);

    推荐阅读