it-swarm.com.de

Erhalten Sie einen Div-Inhalt eines Posts in WordPress?

Wie kann ich div Inhalte aus einem Beitrag abrufen?

Mit the_content() können alle Daten abgerufen werden. Stattdessen benötige ich nur spezifischen Inhalt aus der div. Bisher konnte ich nur den Link des Posts als div Inhalt abrufen.

Folgendes versuche ich zu tun:

<?php while (have_posts()) : the_post(); ?>

<li style = "text-align: center; float : left;">

  <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php echo get_the_post_thumbnail($id); ?></a>

  <div class="title">
    <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
  </div>

  <div id = "result">`

    <?php echo "<script> 
      $('#result').load( '".the_permalink()." .ps_post_description' );
    </script>"; ?>

  </div>

</li>

<?php endwhile; ?>

ps_post_description ist die Klasse des div, für die ich den Inhalt benötige.

2
puneet

Mit DOMDocument und DOMXPath können Sie dies versuchen.

<?php while (have_posts()) : the_post();

ob_start();  // run the_content() through the Output Buffer
the_content();
$html = ob_get_clean(); // Store the formatted HTML
$content = new DomDocument(); // Create a new DOMDocument Object to work with our HTML
$content->loadHTML( $html ); // Load the $html into the new object
$Finder = new DomXPath( $content );  // Create a new DOMXPath object with our $content object that we will evaluate
$classname = 'ps_post_description'; // The class we are looking for

$item_list = $Finder->query("//*[contains(@class, '$classname')]"); // Evaluates our content and will return an object containing the number of items matching our query
?>

<li style = "text-align: center; float : left;">

  <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php echo get_the_post_thumbnail($id); ?></a>

  <div class="title">
    <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
  </div>

  <div id = "result">`
    <?php 
    // echo the value of each item found
    // You might want to format or wrap your $value according to your specification if necessary
    for( $i = 0; $i < $item_list->length; $i++ ){
    $value = $item_list->item( $i )->nodeValue;

      echo $value;

      // if you want the text to be a link to the post, you could use this instead 
      // echo '<a href="' . get_the_permalink() . '">' . $value . '</a>';

    } ?>
  </div>

</li>

<?php endwhile; ?>

UPDATE

Verwendet Output Buffering , um Shortcodes zu erweitern, bevor wir versuchen, den HTML-Code in DOMDocument zu laden

Beachten Sie, dass beide Lösungen (vor und nach der Bearbeitung) funktionieren. Daher sollten Fehler/Warnungen von einer anderen Stelle in Ihrem Setup stammen.

2
bynicolas

Sie müssten den gesamten Inhalt rausholen und ihn dann auf diesen bestimmten Div reduzieren. Aber warum willst du das tun? Es ist unzulänglich und umständlich - zusätzliche Arbeit, um es in die Datenbank zu stellen, zusätzliche Arbeit, um es herauszubekommen. Haben Sie darüber nachgedacht, ein benutzerdefiniertes Feld hinzuzufügen, das nur für diesen Inhalt verwendet werden soll? (Der Auszug klingt wie das, wonach Sie suchen. Er ist bereits integriert und alles, was Sie tun müssen, um ihn zu verwenden, ist <?php the_excerpt(); ?>.)

1