Ist es möglich, einen bestimmten Abschnitt eines Beitrags getrennt zu behandeln?

Ich habe ein bisschen mit WordPress herumgebastelt, aber ich bin weit von einem Experten entfernt, also entschuldige mich im Voraus, wenn das eine doppelte Frage ist.

Ich habe ein einfaches WordPress Theme basierend auf Bootstrap erstellt, und ich kann erfolgreich Beiträge mit the_content() anzeigen, während ich die Sidebar mit get_sidebar() .

Meine Frage ist, ob es möglich ist, einen bestimmten Abschnitt eines the_content() zu markieren, und dieser Abschnitt anders als der Rest von the_content() . Hier ist ein Beispiel:

Bildbeschreibung hier eingeben

Hier ist ein Pseudocode:

   

In diesem Fall würde ich gerne ein Bild aus dem Post markieren (oder anderweitig identifizieren) und es im col-md-12 div erscheinen lassen, während der Rest des Posts in das col-md-8 div geht.

Ich habe über the_excerpt() gelesen, aber ich glaube nicht, dass das hier funktionieren wird.

Solutions Collecting From Web of "Ist es möglich, einen bestimmten Abschnitt eines Beitrags getrennt zu behandeln?"

Sie können die in @gmazzap vorgeschlagenen Kommentare in Kommentaren verwenden. Dieses vorgestellte Bild wird nicht in den Post-Inhalt aufgenommen. Wenn Sie Ihre Bilder jedoch bereits in den Post-Inhalt aufgenommen haben, müssen Sie den Inhalt der Post in zwei Teilen streichen, wie Sie in Ihrer Frage gesagt haben.

Ich habe zwei functionen, eine, die alle Bilder (oder jeden HTML-Tag-Inhalt) aus dem Inhalt zurückgibt und eine function, die den Text ohne das gewünschte Tag / Bilder zurückgibt. Beide functionen verwenden DOMDocument

Die erste function get_content_without_tag() gibt den Inhalt zurück, der aus Bildern entfernt wurde. Es gibt zwei Parameter

  • $html -> Der Text mit Bildern, die entfernt werden sollen, verwenden Sie in diesem Fall apply_filters( 'the_content', get_the_content() ) , um den Post-Inhalt zu verwenden

  • $tag -> Der Name des zu entfernenden Tags, in diesem Fall ‘a’ als Tags, die Bilder enthalten

Hier ist die function

 function get_content_without_tag( $html, $tag ) { $dom = new DOMDocument; $dom->loadHTML( $html ); $dom_x_path = new DOMXPath( $dom ); while ($node = $dom_x_path->query( '//' . $tag )->item(0)) { $node->parentNode->removeChild( $node ); } return $dom->saveHTML(); } 

Sie würden dies dann anstelle von the_content() wo Sie nur Text anzeigen müssten, indem Sie das vollständige -Tag in dem die Bilder wie folgt aussehen

 echo get_content_without_tag( apply_filters( 'the_content', get_the_content() ), 'a' ) 

Die zweite function get_tag_without_text() gibt den Inhalt zwischen dem gewünschten Tag, in Ihrem Fall Bildern, zurück. Die Parameter sind genau die gleichen wie die erste function. Hier ist die function

 function get_tag_without_text( $html, $tag ) { $document = new DOMDocument(); $document->loadHTML( $html ); $tags = []; $elements = $document->getElementsByTagName( $tag ); if ( $elements ) { foreach ( $elements as $element ) { $tags[] = $document->saveHtml($element); } } return $tags; } 

Diese function gibt ein Array von Bildern zurück, wenn Sie a Tag verwenden. Um das erste Bild anzuzeigen, verwenden Sie die function wie folgt:

 $image = get_tag_without_text( apply_filters( 'the_content', get_the_content() ), 'a' ); echo $image[0]; 

Nur einen letzten Tipp auf Ihren Code, bewegen Sie Ihren Anruf die Seitenleiste außerhalb Ihrer Schleife. Es sollte direkt über dem Ruf zur Fußzeile gehen

Sie könnten versuchen, erweiterte benutzerdefinierte Felder Plugin zu verwenden . Sie können der Seite unter dem Inhaltsbereich ein Bildfeld hinzufügen und dieses benutzerdefinierte Feld dann an der gewünschten Stelle auf der Seite ausgeben, indem Sie Folgendes verwenden: Feldname ist der Name des von Ihnen erstellten Felds. Sie würden dann den Code einfach in das von Ihnen gewünschte CSS einfügen.

 

< ?php the_field('field_name'); ?>

Sie können auch einfach das vorgestellte Bild verwenden.