我正在使用一个名为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="/"'.$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 。>
应该由内置的另一个功能(自定义程序的一部分)来设置网址。这是同一文件中的另一个功能。
// 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 );
Aaaand我被困住了。无论我如何重新排列这些优先级或对其进行优先级排序,都永远不会看到锚链接返回牛肉或指定的URL。我无所适从。
有什么想法吗?长一个,对不起。谢谢。
答案 0 :(得分:1)
添加新功能时,URL是通过定制程序设置的,因此始终存在,它不依赖任何外部操作。使用:
'<figure class="sec-feature-figure"><a href="'.$widget_options['btn_url'].'">%s</a></figure>'
但是,如果直接修改插件,则更新时,所做的更改将被覆盖。正确的方法是覆盖子主题functions.php
(它们是provide one)中的操作。
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);