WordPress : Modification du code Businessx pour créer dynamiquement des icônes cliquables

Publié par Jean-Michel le

Je travaille avec un thème WordPress appelé BusinessX, et ils ont un plugin appelé Businessx-extensions qui leur permet de contrôler des fonctions comme celle en question aujourd’hui – la section des fonctionnalités. Il s’agit essentiellement d’une grille d’icônes. Cependant, je veux que lesdites icônes soient cliquables. Alors j’ai trouvé l’endroit où ça se passe…

// 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;
        }
    }
}

J’ai donc édité la ligne qui commence par $format = ( $icon !=… et ajouté une ancre et une variable que j’ai déclarée en haut de ma classe appelée burl .

Burl est censé être défini par une autre fonction intégrée qui fait partie du personnalisateur. Voici une autre fonction du même fichier.

// 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;
        }
    }

Mais, pour ma vie, je n’arrive pas à obtenir que cela renvoie du boeuf OU l’URL spécifiée. D’accord. Ensuite, j’ai trouvé le fichier pour 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 je suis coincé. Peu importe comment je les réorganise ou les réorganise, je ne vois jamais les liens d’ancrage renvoyer du bœuf ou l’URL spécifiée. Je ne sais pas quoi d’autre je devrais essayer.

Des pensées? Longue, désolé. Merci.

Solution n°1 trouvée

L’URL est définie via le personnalisateur lorsque vous ajoutez une nouvelle fonctionnalité, elle est donc là tout au long, elle ne dépend d’aucune action externe. Utilisation:

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

Cependant, si vous modifiez directement le plugin, vos modifications seront écrasées lorsque vous le mettrez à jour. La bonne façon de le faire est de remplacer l’action dans votre thème enfant functions.php(ils en fournissent un).

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);
Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *