Est-il possible d'ajouter ce filtre
add_filter("the_content", "magicalender_get_event_page");
Mais seulement pour une page spécifique, par exemple
if($post->post_name == "magicalenderpage")
Si je mets l'instruction if dans la fonction, le contenu n'est pas affiché sur les autres pages - et avec une autre instruction après qui renvoie le contenu de la page, sinon je rencontre des problèmes d'interférence avec d'autres plug-ins qui faire des choses avec
add_filter("the_content", "foo");
La fonction magicalender_get_event_page est la suivante
function magicalender_get_event_page(){
global $wpdb;
global $post;
if($post->post_name == "magicalenderpage"){
echo "<div class=\"magi_calender\">";
for($i = 0; $event = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."magicalender", ARRAY_A, $i); $i++){
echo"
<div class=\"event\">
<h1>".$event['event']."</h1>
<h2>".date('m/d/Y', strtotime($event['dmy']))."</h2>
<div>".str_replace("&", "&", str_replace("'", "'", str_replace(""", "\"", $event['desc'])))."</div>
</div>
";
}
echo "</div>";
$o = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."magioptions", ARRAY_A);
echo"
<script type=\"text/javascript\">
var priority = '".$o['dm']."';
var customDays = new Array('".$o['monday']."', '".$o['tuesday']."', '".$o['wednesday']."', '".$o['thursday']."', '".$o['friday']."', '".$o['saturday']."', '".$o['sunday']."');
var customMonths = new Array('".$o['january']."', '".$o['february']."', '".$o['march']."', '".$o['april']."', '".$o['may']."', '".$o['june']."', '".$o['july']."', '".$o['august']."', '".$o['september']."', '".$o['october']."', '".$o['november']."', '".$o['december']."');
var customMonthsShort = new Array('".$o['jan']."', '".$o['feb']."', '".$o['mar']."', '".$o['apr']."', '".$o['ma']."', '".$o['jun']."', '".$o['jul']."', '".$o['aug']."', '".$o['sep']."', '".$o['oct']."', '".$o['nov']."', '".$o['dec']."');
jQuery(\".magi_calender\").magiCalender(priority, customDays, customMonths, customMonthsShort);
</script>
";
}
else{
return $content;
}
}
Il est utile de publier l'intégralité de votre filtre et votre code de rappel, plutôt que de simples morceaux.
Mais je soupçonne que le problème est que vous n'êtes pas en retournant $the_content
en dehors de votre conditionnel, par exemple:
function magicalendar_get_event_page( $content ) {
if ( $post->post_name == 'magicalendarpage' ) {
// Do something to $content
return $content;
}
}
add_filter( 'the_content', 'magicalendar_get_event_page' );
Si c'est le cas, déplacez le retour outside le conditionnel:
function magicalendar_get_event_page( $content ) {
if ( $post->post_name == 'magicalendarpage' ) {
// Do something to $content
}
return $content;
}
add_filter( 'the_content', 'magicalendar_get_event_page' );
Pour savoir pourquoi/comment cela interfère avec d'autres filtres sur 'the_content'
, nous devons probablement voir votre code.
MODIFIER
Au moins deux problèmes:
$content
comme argument à votre rappel de filtrethe_content
.Si vous devez filtrer the_content
spécifiquement avant ou après d’autres filtres, ajoutez une priorité à votre appel add_filter()
. 10 est la valeur par défaut. Utilisez un nombre inférieur pour filtrer sooner ; utilisez un nombre plus élevé pour filtrer later .