So, Blick auf die Seite hat weitergeholfen, denke ich: So wie ich das sehe, manipulierst Du auf allen betroffenen Seiten den Loop, sprich Du baust einen Loop in eine Seitenausgabe ein. Wenn man das nicht richtig macht, werden die Originalvariablen vom Original-"Loop" überschrieben und Methoden wie is_page gehen dann nicht mehr. Ist jetzt mal meine Vermutung.
Ein korrektes Beispiel, wie man einen Loop auf einer Page einbaut, könnte so aussehen:
PHP
$dor_query = new WP_Query('cat=123&showposts=6');
if ($dor_query->have_posts()) {
while ($dor_query->have_posts()) : $dor_query->the_post();
// ...
endwhile;
} /* end if posts */
Hier habe ich eigene Variablen verwendet. Alternativ kannst Du Dir $post auch in einer Variablen $old_post merken und nach dem Loop wieder $post zuweisen. das müsste auch gehen.