web-dev-qa-db-fra.com

Remplacer la fonction de plug-in dans WordPress

J'ai un plugin installé sur mon site WordPress.

Je voudrais remplacer une fonction dans le plugin. Dois-je remplacer cela dans le functions.php De mon thème et si oui, comment dois-je procéder?

Voici la fonction d'origine de mon plugin:

    /**
     * sensei_start_course_form function.
     *
     * @access public
     * @param mixed $course_id
     * @return void
     */
    function sensei_start_course_form( $course_id ) {

        $prerequisite_complete = sensei_check_prerequisite_course( $course_id );

        if ( $prerequisite_complete ) {
        ?><form method="POST" action="<?php echo esc_url( get_permalink() ); ?>">

                <input type="hidden" name="<?php echo esc_attr( 'woothemes_sensei_start_course_noonce' ); ?>" id="<?php echo esc_attr( 'woothemes_sensei_start_course_noonce' ); ?>" value="<?php echo esc_attr( wp_create_nonce( 'woothemes_sensei_start_course_noonce' ) ); ?>" />

                <span><input name="course_start" type="submit" class="course-start" value="<?php echo apply_filters( 'sensei_start_course_text', __( 'Start taking this Course', 'woothemes-sensei' ) ); ?>"/></span>

            </form><?php
        } // End If Statement
    } // End sensei_start_course_form()
8
michaelmcgurk

Vous ne pouvez pas vraiment "remplacer" une fonction. Si une fonction est définie, vous ne pouvez pas la redéfinir ou la modifier. Votre meilleure option est de créer une copie du plugin et de changer directement la fonction. Bien sûr, vous devrez répéter cette opération à chaque mise à jour du plugin.

Donnez un nom différent au plugin pour les distinguer dans la liste des plugins. Désactivez l'original, activez votre copie.

6
Gerald Schneider

Je sais que c'est en retard mais dans le cas où quelqu'un d'autre trouverait ce post. Une solution plus simple consiste à faire une copie de la fonction si vous le pouvez dans votre fichier de fonctions de thèmes et à le renommer afin qu'il n'entre pas en conflit avec la fonction d'origine. Utilisez ensuite votre nouvelle fonction à la place de l'original. De cette façon, vous pouvez mettre à jour les fichiers du plugin sans affecter vos modifications.

7
Braeden Black

Vous pouvez le faire en utilisant la fonction add_filter () .
Voir wordpress stackexchange: Remplacer le plugin avec functions.php

Ajoutez simplement le code ci-dessous dans le thème functions.php fichier.

add_filter('sensei_start_course_form','MyCustomfilter',$priority = 10, $args = 1);

function MyCustomfilter($course_id) { 
// Do your logics here
}
7
Noman