このフィルタを追加することは可能ですか
add_filter("the_content", "magicalender_get_event_page");
しかし、例えば特定の1ページだけ
if($post->post_name == "magicalenderpage")
関数の中にif文を入れると、他のどのページでも内容は表示されません - その後else文でそのページの内容がエコーアウトされます。と物事を行う
add_filter("the_content", "foo");
Magicalender_get_event_page関数は以下の通りです。
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;
}
}
単なる断片ではなく、フィルタとコールバックのコード全体を投稿すると便利です。
しかし、問題は、あなたが条件付きで$the_content
を返さないということであると思います。例えば:
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' );
その場合は、戻り値 outside を条件式に移動します。
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' );
'the_content'
上の他のフィルタに何故/どのように干渉しているかを知るためには、おそらくあなたのコードを見る必要があります。
_編集_
少なくとも2つの問題
$content
を渡していませんthe_content
に適用された他のフィルタに関してあなたの問題を引き起こしている可能性が非常に高いです。他のフィルタの前後に特にthe_content
をフィルタする必要がある場合は、add_filter()
呼び出しに優先順位を付けます。デフォルトは10です。 より早く ;をフィルタリングするには、小さい番号を使用してください。 後で をフィルタリングするには、より高い数値を使用してください。