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()
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.
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.
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
}