web-dev-qa-db-de.com

Wie kann ich einen Teil der Hauptschleife in meinem untergeordneten Thema überschreiben?

Ich habe ein Kinderthema, das auf dem zehnundzwanzigsten Thema basiert, mit dem ich bis auf eine Sache zufrieden bin. In meinen Galerieposts (ich bin Fotograf, das Ziel meines Blogs sind Bilder) werden keine Bilder aus dem Post auf der Hauptseite angezeigt. Ich möchte, dass meine Hauptseite eine Liste der letzten Galerie-Posts ist, von denen jeder die verkürzte Version der Beschreibung mit einem Vorschaubild (erstes Bild aus der veröffentlichten Galerie) enthalten soll. Ich verwende NextGen Gallery und Slim Box, um meine Bilder anzuzeigen - wenn das einen Unterschied macht.

Ich habe die Stelle gefunden, an der die Hauptschleife den Eintrag für jeden Beitrag auf der Hauptseite erstellt:

    <?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search. ?>
        <div class="entry-summary">
            <?php the_excerpt(); ?>
        </div><!-- .entry-summary -->
<?php else : ?>
        <div class="entry-content">
            <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?>
            <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
        </div><!-- .entry-content -->
<?php endif; ?>

Also, was ich tun muss, ist eine der folgenden:

  1. Überschreiben Sie die the_content -Methode, um das Vorschaubild meiner Galerie zusammen mit dem bereits vorhandenen Thema einzuschließen.
  2. Überschreiben Sie einen Teil der obigen Hauptschleife, um nach dem Aufruf von the_content und vor dem Aufruf von wp_link_pages ein Bild hinzuzufügen.
  3. Überschreiben Sie die gesamte Hauptschleife, um dasselbe zu tun.

Ich habe das Gefühl, etwas Offensichtliches zu vermissen, weil ich ernsthafte Nachteile bei allen drei Optionen sehe, die ich mir vorstellen kann:

  1. Ich sehe keinen Verweis auf überschreibende Funktionen wie the_content und selbst wenn ich es hinzufügen könnte, möchte ich es nicht ersetzen. Gibt es überhaupt noch Möglichkeiten, die Funktionalität der ursprünglichen Methode aufzurufen, nachdem Sie eine Methode überschrieben haben?
  2. Soweit ich sehen kann, gibt es keine Möglichkeit, einen Teil einer Schleife außer Kraft zu setzen - es ist alles oder nichts.
  3. Was mich zu 3 führt - Ersetzen der Hauptschleife. An diesem Punkt muss ich mich ernsthaft fragen, ob es sich lohnt, ein Kinderthema zu haben, wenn ich die Hauptschleife ersetze. Das ist eine Menge Code, den ich nicht besitzen muss, den ich am Ende besitzen würde.

Gibt es einen offensichtlichen Weg, dies zu tun, den ich vermisse?

2
Ian Lelsie

Anstatt die Hauptschleife zu überschreiben, können Sie immer nur eine Vorlage erstellen, die der Hauptschleife ähnelt, und diese auf einer separaten Seite verwenden (die Sie dann als Startseite festlegen).

Sie müssen nur eine wp_query in dieser Vorlage einrichten, um die gewünschten Posts aufzurufen und eine Schleife für diese auszuführen.

Auf diese Weise bleibt alles im Takt und Sie haben nur eine Seite in Ihrem Kinderthema. Dann können Sie nach the_content (); hinzufügen, was Ihnen gefällt.

So würde ich normalerweise vorgehen.

Siehe hier: http://codex.wordpress.org/Stepping_Into_Templates

1
josh

Etwas zu beachten ...

Twenty Ten unterstützt das Post-Format "Galerie". Sie können einfach eine "loop-gallery.php" -Vorlage erstellen, die mit dem Thema verwendet werden soll, anstatt den "Index" spezifisch zu überschreiben und/oder ein untergeordnetes Thema zu erstellen.

NB: Wenn die Twenty Ten-Autoren eine 'Loop-Gallery'-Vorlage hinzufügen, müssen Sie diese über ein Child-Theme überladen.

0
Edward Caissie