Teaser für den neuesten Artikel aus festgelegter Kategorie erzeugen

  • hallo wordpresser!

    dies ist mein erster post, weil ich trotz suche etc nicht mit meinem problem weiterkomme:

    ich verwende WP als eine art CMS, auf der startseite soll immer ein feature-artikel in einer gesonderten box angeteasert werden.
    dazu habe ich mir überlegt, dass der neueste artikel (und nur dieser) aus der kategorie "features" ausgegeben und gekürzt wird.

    das kürzen auf eine feste zeichenlänge und den link setzen kann man ja relativ einfach mit PHP, daher die frage:

    wie bekomme ich von WP den content des ersten artikels einer kategorie ausgegeben?

    wie würdet Ihr so ein problem lösen?

    ich habe mal gesucht, the_excerpt_reloaded klang vielversprechend, aber scheint mir dennoch unbrauchbar..:(

    viele grüße
    huedrant


    ps: bin etwas verwirrt von der foreneinteilung, ich habe das jetzt mal in "templates" gepostet. oder ist das doch eher "konfiguration"?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ich nehme an du hast eine statische Startseite mit eigenem Template!?
    Dann mach da einen Loop aus der index.php mit rein, dovor das:

    PHP
    <?php query_posts('cat=1'); ?>


    Die 1 musst mit der ID deiner Kat ersetzen. Ach so, nu muss ja noch angegeben werden das nur ein Post genommen wird, mach mal ein anderer ;)

    Fällt mir jetzt nicht ein.

  • :D

    danke schon mal für den hinweis - jetzt fehlt nur noch der code für "nur eins raussuchen" - will jemand vor?

    :confused:


    HTML
    <?php $top_query = new WP_Query('cat=3&showposts=1'); ?>
    <?php while($top_query->have_posts()) : $top_query->the_post();
    $do_not_duplicate = $post->ID; ?>
          <div class="first">
            <h3>the title</h3>
             <?php the_content("&raquo;&raquo; " . the_title('', '', false)); ?>
           </div>
    <?php endwhile; ?>

    das sagt WP:
    hole aus der cat mit der ID 3 ein Post

    darunter kann dann der *normale* Loop von WP der mit
    if have post while have post the post ..anfängt wieder anfangen ;)


    das html wird nicht stimmen

    lg

  • super!

    danke schon mal für den denkansatz und die prompte antwort! die detaillierte beschreibung, was da genau passiert, ist sehr hilfreich. ich habe das auch mal ausprobiert, und ich bekomme auch das raus, was ich erhofft habe.

    nun habe ich Deinen ansatz mal etwas weiterverfolgt und bin im codex (The Loop « WordPress Codex) auf folgenden schnipsel gestoßen:

    PHP
    <?php $my_query = new WP_Query('category_name=featured&showposts=1');
      while ($my_query->have_posts()) : $my_query->the_post();
      $do_not_duplicate = $post->ID;?>
        <!-- Do stuff... -->
      <?php endwhile; ?>
        <!-- Do other stuff... -->
      <?php if (have_posts()) : while (have_posts()) : the_post(); 
      if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>
       <!-- Do stuff... -->
      <?php endwhile; endif; ?>

    nun funktioniert das aber mit dem $do_not_duplicate nicht.

    ich habe den ersten teil in der header.php, den teil "if( $post->ID == $do_not_duplicate ) continue; " in der index.php.

    gibt es irgendwas, das man in WP bzw PHP beachten muss? muss ich das erst global setzen oder so?

    Einmal editiert, zuletzt von huedrant (8. August 2007 um 15:47)

  • Du musst dafür meinen Ansatz mit dem 2. Teil aus dem Codex nutzen



    lg

  • hallo monika!

    danke nochmal für Deine antwort. ich habe das schon so versucht, wie du beschreibst, ich habe das nur über zwei dateien verteilt.

    meine dateien sehen so aus (also nur ausschnitte):

    header.php:

    PHP
    if (is_home()) {
    	
      	$top_query = new WP_Query('cat=14&showposts=1');
      	while($top_query->have_posts()) : $top_query->the_post();
        $do_not_duplicate = $post->ID;

    index.php:

    PHP
    <?php get_header(); ?>
    
    
    	<?php if (have_posts()) : ?>
    		
    		<?php while (have_posts()) : the_post(); 
    		if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>

    stimmt da was nicht? eigentlich müsste das doch die richtigen sachen rausfiltern. trotzdem wird der betreffende post 2mal angezeigt.

    :(

  • du hast da

    if is home

    ist eine Frage, ob es *home* ist ?

    hast Du vielleicht eine statische Seite zur 1. Seite gemacht?
    wenn ja, dann müßt es lauten if is page (ID der page)

    versuch es mal ohne das if is

    lg

  • hallo monika!

    bin gerade etwas unregelmäßig am weiterbasteln..

    also, das if (is_home) ist da, weil ich das ja nur die startseite, also home packen will. auf den anderen seiten soll es nicht da sein. daher die if-abfrage.

    nee, ne statische seite habe ich hier nicht als home. das mit dem if-rausnehmen macht keinen unterschied.. noch eine idee?

    viele grüße

  • oh, das mit dem teaser-worte zählen ist doch nicht so einfach:

    ich muss, um die zahl der ausgegebenen worte für den teaser zu begrenzen, beim inhalt die die worte zählen und wieder ausgeben.
    wie bekomme ich denn mit WP die ausgabe von "the_content" in eine variable?

    PHP
    $articleContent = the_content("&raquo;&raquo; " . the_title('', '', false));

    funktioniert jedenfalls nicht, die variable ist leer. wie geht das denn bei wordpress? ich habe in der doku keine angaben dazu gefunden...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!