add_filter pentru pagini specifice
Este posibil să adaug acest filtru
add_filter("the_content", "magicalender_get_event_page");
Dar doar pentru o pagină specifică, de exemplu
if($post->post_name == "magicalenderpage")
Dacă pun instrucțiunea if în interiorul funcției, atunci pe orice altă pagină conținutul nu este afișat - iar cu o instrucțiune else după care afișează conținutul paginii, întâmpin probleme unde interferează cu alte plugin-uri care fac și ele modificări cu
add_filter("the_content", "foo");
Funcția magicalender_get_event_page este următoarea
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;
}
}

Este util să postați întregul cod al filtrului și al funcției de callback, nu doar bucăți.
Dar, bănuiesc că problema este că nu returnați $the_content
în afara condiționalei, de exemplu:
function magicalendar_get_event_page( $content ) {
if ( $post->post_name == 'magicalendarpage' ) {
// Faceți ceva cu $content
return $content;
}
}
add_filter( 'the_content', 'magicalendar_get_event_page' );
Dacă acesta este cazul, mutați returnarea în afara condiționalei:
function magicalendar_get_event_page( $content ) {
if ( $post->post_name == 'magicalendarpage' ) {
// Faceți ceva cu $content
}
return $content;
}
add_filter( 'the_content', 'magicalendar_get_event_page' );
Pentru a ști de ce/cum interferează cu alte filtre pe 'the_content'
, probabil avem nevoie să vedem codul dumneavoastră.
EDITARE
Cel puțin două probleme:
- Nu transmiteți
$content
ca argument funcției de callback a filtrului - NU ECHOUIEȚI REZULTATUL FILTRULUI! Returnați-l. Acest lucru este foarte probabil să cauzeze problema cu alte filtre aplicate la
the_content
.
Dacă trebuie să filtrați the_content
înainte sau după alte filtre, atunci adăugați o prioritate la apelul add_filter()
. 10 este valoarea implicită. Folosiți un număr mai mic pentru a filtra mai devreme; folosiți un număr mai mare pentru a filtra mai târziu.

De fapt, practic am ce ai tu acolo, dar problema este că unele plugin-uri care fac lucruri similare cu ale mele (unde $content
este înlocuit cu altceva și nu este afișat efectiv) atunci cele două plugin-uri intră în conflict. Am actualizat postul meu pentru a include întreaga mea funcție.

@Stephen Cook - codul tău cu siguranță nu are $content
ca argument al funcției - vezi în răspunsul lui @Chip Bennett function magicalendar_get_event_page( $content ) {
- de asemenea, de ce nu iei în considerare crearea unui șablon de pagină pentru această pagină?

Un șablon de pagină este foarte probabil soluția aici. P.S. vezi răspunsul editat.

De fapt, aveam $content ca parametru în plugin-ul meu, nu știu cum am găsit o copie de lipit aici fără el. Dar mulțumesc, voi încerca să folosesc "return" nu "echo" și de asemenea un șablon de pagină

Probabil aș alege un șablon de pagină personalizat. Dacă mergi pe această cale, nici măcar nu trebuie să apelezi the_content()
(doar puneți codul personalizat în locul Loop-ului). În acest fel, nici măcar nu trebuie să vă faceți griji cu privire la alte plugin-uri care filtrează the_content
.
