wake-up-neo.net

add_filter für bestimmte Seiten

Ist es möglich, diesen Filter hinzuzufügen

add_filter("the_content", "magicalender_get_event_page");

Aber zum Beispiel nur für eine bestimmte Seite

if($post->post_name == "magicalenderpage")

Wenn ich die if-Anweisung in die Funktion setze, wird der Inhalt auf anderen Seiten nicht angezeigt - und mit einer else-Anweisung, die anschließend den Inhalt der Seite wiedergibt, stoße ich ansonsten auf Probleme, wenn dies andere Plug-Ins beeinträchtigt Dinge tun mit

add_filter("the_content", "foo");

Die Funktion magicalender_get_event_page lautet wie folgt

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("&amp;", "&", str_replace("&#39;", "'", str_replace("&#34;", "\"", $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;
    }
}
3
Stephen Cook

Es ist hilfreich, den gesamten Filter- und Rückrufcode zu posten und nicht nur Teile.

Ich vermute jedoch, dass das Problem darin besteht, dass Sie nicht$the_content zurückgeben außerhalb Ihrer Bedingungen, z.

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' );

In diesem Fall verschieben Sie die return outside conditional:

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' );

Um zu wissen, warum/wie es andere Filter auf 'the_content' stört, müssen wir wahrscheinlich Ihren Code sehen.

EDIT

Mindestens zwei Probleme:

  1. Sie übergeben $content nicht als Argument für Ihren Filterrückruf
  2. ECHO FILTERAUSGABE NICHT! Gib es zurück. Dies ist sehr wahrscheinlich die Ursache für Ihr Problem mit anderen Filtern, die auf the_content angewendet werden.

Wenn Sie the_content speziell vor oder nach anderen Filtern filtern müssen, fügen Sie Ihrem add_filter()-Aufruf eine Priorität hinzu. 10 ist die Standardeinstellung. Verwenden Sie eine niedrigere Zahl, um eher zu filtern; Verwenden Sie eine höhere Zahl, um später zu filtern.

4
Chip Bennett