Holen Sie sich den Auszug mit der ID
-
-
Wasgenauist "ein Teil" des Inhalts?what exactly is "some" of the content?
- 0
- 2011-03-19
- kaiser
-
Die Auszugsfunktionin WordPressgibt den Auszugeines Beitrags zurück.Wenn der Beitrag keinen Auszugenthält,wirdeine bestimmte Anzahl von Zeichen des Inhalts zurückgegeben,gefolgt von "..." oder "Lesen Siemehr" oder was auchimmer die VorlagebietetThe excerpt function in wordpress returns the excerpt of a post. If the post does not have an excerpt it returns a certain number of characters of the content followed by '...' or 'read more' or whatever the template provides
- 0
- 2011-03-19
- Robin I Knight
-
Nicht umeine PITA zu sein,aber Community-Regeln verbieten Signaturen und Standardabschlüsse.Um die Regelneinzuhalten und zu vermeiden,dass [Jeff Atwood] (http://stackexchange.com/about/management) Ihnennach dem Bearbeiten aller Ihrer Frageneine strenge Nachricht sendet,verwenden Siebitte * "Marvelous" *nichtmehr als Abschluss.* (Undbitte nicht auf den Boten schießen) *Not to be a PITA but community rules disallow signatures and standard closings. So as to abide by the rules and avoid having [Jeff Atwood](http://stackexchange.com/about/management) send you a stern message after editing all your questions, please stop using *"Marvellous"* as a closing. *(And please don't shoot the messenger)*
- 1
- 2011-03-19
- MikeSchinkel
-
10 Antworten
- Stimmen
-
- 2011-03-19
Hallo @Robin I. Knight:
Ichbetrachte
get_the_excerpt()
alseine Funktionmit Legacy-Design.Da die Nutzung von WordPress zugenommen hat,gibt es vieleneuere Anwendungsfälle,in denenesnichtpasst,in denenjedoch dieneueren Funktionen zum Abrufen unterschiedlicher Datenfunktionieren.Ein Beispielist diejetzt häufige Verwendungeines$args
-Arrays von Funktionsoptionen.Aberesisteinfach,esfür Ihre Bedürfnisse zu reparieren.Hieristeine alternative Funktion,die Sie verwenden können und die Sie aneinerbeliebigen Stellein der Datei
functions.php
Ihres Themaseinfügen können:function robins_get_the_excerpt($post_id) { global $post; $save_post = $post; $post = get_post($post_id); $output = get_the_excerpt(); $post = $save_post; return $output; }
Ich habeesnichtgetestet,bin mir aber ziemlich sicher,dassiches richtig verstanden habe.Wenn diesnicht Ihren Anforderungenentspricht,erläutern Sie diesbitte und vielleicht kannich andere Vorschlägemachen.
Hi @Robin I. Knight:
I view
get_the_excerpt()
as a function with legacy design. As WordPress usage has grown there are many newer use-cases where it doesn't fit but where the newer functions for getting different data do. One example is the now frequent use of an$args
array of function options.But it's easy to fix for your needs. Here's an alternative function you can use which you can put anywhere in your theme's
functions.php
file:function robins_get_the_excerpt($post_id) { global $post; $save_post = $post; $post = get_post($post_id); $output = get_the_excerpt(); $post = $save_post; return $output; }
I've not tested it but am pretty sure I got it right. If this doesn't meet your needs please elaborate and maybe I can make other suggestions.
-
Es klappt.Art von.Sehrmerkwürdige Ergebnisse.Eserfüllt definitiv seine Funktion,aber die Ergebnisse sind seltsam.Ichbenutzeesin Verbindungmit GET_Posts und ausirgendeinem Grund sind die Top 2 Get Postsimmergleich.Hieristein Link und Sie werden sehen,wasichmeine.Schauen Sie sich die 4 Pfosten auf der rechten Seite an.http://www.divethegap.com/update/community/feedback/2010/06/steve-riches/It works. Sort of. Very odd results. It is definitely performing its function but the results are odd. I am using it in conjunction with GET_Posts and for some reason the top 2 get posts are always the same. Here is a link and you will see what I mean. Look at the 4 posts on the right hand side. http://www.divethegap.com/update/community/feedback/2010/06/steve-riches/
- 0
- 2011-03-19
- Robin I Knight
-
@Robin I Knight: Bitteposten Sie Ihren Loop-Quellcode als Updatefür Ihre Frage.Esist sehr schwierig,Code zu debuggen,ohne Code zu sehen.Möglicherweiseistes auchein Plugin,das das Problem verursacht.Versuchen Sie,sieeinzeln zu deaktivieren.@Robin I Knight: Please post your loop source code as an update to your question; it's very hard to debug code without seeing code. It's also possibly a plugin that is causing the problem; try disabling them one at a time.
- 0
- 2011-03-19
- MikeSchinkel
-
Schleifenquellcodein Frage oben ^^Loop source code in question above ^^
- 0
- 2011-03-19
- Robin I Knight
-
Übrigens habeich den Namen der Funktionin get_the_excerpt_id ($post_id)geändert.BTW I changed the name of the function to get_the_excerpt_id($post_id)
- 0
- 2011-03-20
- Robin I Knight
-
@Robin I Knight - Ich sehenichtsin Ihrer Schleife,aber Sie könnten versuchen,"setup_postdata ($post)" am Anfang Ihrer Schleife aufzurufen,wie @Rarst vorschlägt.Wenn dasnichtfunktioniert,müssen Siemöglicherweiseein Plugin deaktivieren.hast du das versuchtUnd Siemöchtenes wahrscheinlichnicht "get_the_excerpt_id ()"nennen,da WordPress diese Funktionin Zukunft hinzufügen und Ihre Sitebeschädigen könnte.Und Sie könnten wahrscheinlich auf die Funktionin Ihrer Schleife verzichten,indem Sie `foreach ($ stories als $ story) verwenden:global $post;$post=$ story; `stattdessen.@Robin I Knight - I don't see anything in your loop, but you might try calling `setup_postdata($post)` at the beginning of your loop, as @Rarst suggests. If that doesn't work it might be a plugin you need to disable; have you tried that? And you probably don't want to call it `get_the_excerpt_id()` because WordPress could add that function in the future and break your site. And you could probably do without the function in your loop by using `foreach($stories as $story): global $post; $post = $story;` instead.
- 0
- 2011-03-20
- MikeSchinkel
-
- 2011-03-20
Die Mechanik des Auszugsist äußerst verwirrend.Esist keinegenaue Antwort auf Ihre Frage,aberim Allgemeinen können Sie Loop wiefolgtemulieren,wenn Siefür Loop spezifische Vorlagen-Tagserstellenmüssen,diemit dem von
get_posts()
zurückgegebenen Array arbeiten.$stories = get_posts(); foreach ($stories as $post) { setup_postdata($post); // stuff } wp_reset_postdata();
The mechanics of excerpt are extremely confusing. It is not precise answer to your question but in general if you need to make template tags, specific to Loop, work with array returned by
get_posts()
you can emulate Loop like this:$stories = get_posts(); foreach ($stories as $post) { setup_postdata($post); // stuff } wp_reset_postdata();
-
wasistmit wp_reset_query ();?what about wp_reset_query(); ?
- 0
- 2012-01-27
- cwd
-
@cwd,wennnur die Verwendung derglobalen Abfrage "setup_postdata ()"nichtbetroffenist undnur die Post-Daten zurückgesetzt werdenmüssen.@cwd if only using `setup_postdata()` global query is not affected and only post data needs to be reset.
- 1
- 2012-01-27
- Rarst
-
Diese Lösungist legierungsreiniger als das Speichern des Pfostensin einer anderen Sorte und das Erforderniseines anderen Pfostens,nur umihnglobal zuerhalten.+1This solution is allot cleaner than storing the post in another var and requering another post just to get it global. +1
- 0
- 2013-04-10
- Barry Kooij
-
Danke @Rarst,das hatmirgeholfen.Hinzufügen von setup_postdata ($post);löstemeine ProblemeThanks @Rarst that helped me out. Adding setup_postdata($post); resolved my issues
- 0
- 2014-11-14
- Simon
-
- 2012-01-14
Seit 3.3.0gibt eseine neue Funktion: wp_trim_words
Ich verwendees außerhalb der Schleife wiefolgt:
<?php if ( $post_id ) { $post = get_post( $post_id ); if ( $post ) { ?> <h2><?php echo $post->post_title; ?></h2> <p><em><?php echo wp_trim_words( $post->post_content ); ?></em></p> <p><strong>This article can only be read by subscribers.</strong></p> <?php } } ?>
Diesistnicht zu verwechselnmit wp_trim_excerpt ,das anscheinendnurinnerhalb der Schleifefunktioniert,daes den_content ()intern aufruft.
There is a new function since 3.3.0: wp_trim_words
I'm using it outside the loop as follows:
<?php if ( $post_id ) { $post = get_post( $post_id ); if ( $post ) { ?> <h2><?php echo $post->post_title; ?></h2> <p><em><?php echo wp_trim_words( $post->post_content ); ?></em></p> <p><strong>This article can only be read by subscribers.</strong></p> <?php } } ?>
This is not to be confused with wp_trim_excerpt that apparently only works within the loop, since it calls the_content() internally.
-
- 2013-08-30
Nur um MikeSchinkels Antwort zuergänzen,die ausirgendeinem Grundfürmichnichtfunktionieren würde.Ichmusste die Zeile setup_postdata hinzufügen,damitesfunktioniert.
function get_the_excerpt( $post_id ){ global $post; $save_post = $post; $post = get_post($post_id); setup_postdata( $post ); // hello $output = get_the_excerpt(); $post = $save_post; return $output;
}
Ichgehe davon aus,dass wenn Sie dies außerhalb der Schleife verwenden,es andere aktivierende setup_postdatanicht stören sollte.
Prost
Just to add to MikeSchinkel's answer, which for some reason wouldn't work for me. I had to add the setup_postdata line to make it work.
function get_the_excerpt( $post_id ){ global $post; $save_post = $post; $post = get_post($post_id); setup_postdata( $post ); // hello $output = get_the_excerpt(); $post = $save_post; return $output;
}
I'm assuming if you're using this outside the loop then it shouldn't interfere with other setup_postdata going on.
Cheers
-
Ich habe die Antwort von MikeSchinkel ausprobiert undes hatbei mirnichtfunktioniert.Das Einrichten von Post-Daten hat den Trickgetan.Inmeinem Fall ohne die 'setup_postdata' hat die Funktion den Titel + Auszug des übergeordneten Beitrags zurückgegeben.I tried MikeSchinkel's answer and it did not work for me. Setting up post data did the trick. In my case without the 'setup_postdata' the function returned the title+excerpt of the parent post.
- 0
- 2016-09-25
- turzifer
-
- 2013-05-02
Aufbauend auf der Antwort von @ Maxime,würde diesfunktionieren?
$post = get_post( $id ); $excerpt = ( $post->post_excerpt ) ? $post->post_excerpt : $post->post_content;
Es scheintmir direktgenug zu sein,aberichfragemich,obmiretwasfehlt.
Building on @Maxime's answer, would this work?
$post = get_post( $id ); $excerpt = ( $post->post_excerpt ) ? $post->post_excerpt : $post->post_content;
It seems straight forward enough to me, but I'm wondering if I'm missing something.
-
- 2011-07-11
Wenn ALLE Ihre Beiträge das Tag
<!--more-->
haben,können Siemit Ihrem obigen Code Folgendes verwenden:$sjc_excerpt = explode( '<!--more-->', $post->post_content); echo wpautop( $sjc_excerpt[0] );
Wenn Sie Beiträge haben,dienicht über das Tag
<!--more-->
verfügen,werden diesein ihrer Gesamtheit angezeigt.Funktioniertin meiner Situation,abernichtfür alle ...If ALL your posts have the
<!--more-->
tag, then you can use the following with your code above:$sjc_excerpt = explode( '<!--more-->', $post->post_content); echo wpautop( $sjc_excerpt[0] );
Of course if you have any posts that don't have the
<!--more-->
tag, they'll be shown in their entirety. Works in my situation, but not for all... -
- 2016-04-19
Ichbetrachte
get_the_excerpt()
alseine Funktionmit Legacy-Design.Da die Nutzung von WordPress zugenommen hat,gibt es vieleneuere Anwendungsfälle,in denenesnichtpasst,in denenjedoch dieneueren Funktionen zum Abrufen unterschiedlicher Datenfunktionieren.Ein Beispielist diejetzt häufige Verwendungeines$args
-Arrays von Funktionsoptionen.Aberesisteinfach,esfür Ihre Bedürfnisse zu reparieren.Hieristeine alternative Funktion,die Sie verwenden können und die Sie aneinerbeliebigen Stellein der Datei
functions.php
Ihres Themaseinfügen können:function robins_get_the_excerpt($post_id) { global $post; $save_post = $post; $post = get_post($post_id); $output = get_the_excerpt(); $post = $save_post; return $output; }
Nur um MikeSchinkels Antwort zuergänzen,die ausirgendeinem Grundfürmichnichtfunktionieren würde.Ichmusste die Zeile setup_postdata hinzufügen,damitesfunktioniert.
I view
get_the_excerpt()
as a function with legacy design. As WordPress usage has grown there are many newer use-cases where it doesn't fit but where the newer functions for getting different data do. One example is the now frequent use of an$args
array of function options.But it's easy to fix for your needs. Here's an alternative function you can use which you can put anywhere in your theme's
functions.php
file:function robins_get_the_excerpt($post_id) { global $post; $save_post = $post; $post = get_post($post_id); $output = get_the_excerpt(); $post = $save_post; return $output; }
Just to add to MikeSchinkel's answer, which for some reason wouldn't work for me. I had to add the setup_postdata line to make it work.
-
Benötigt dies "wp_reset_postdata ()",uminnerhalb der Schleife zu arbeiten?Does this need `wp_reset_post_data()` to work inside the loop?
- 0
- 2017-07-10
- Chris Pink
-
Anscheinend (nachdemich dieses spezielle Haus umrundet habe)istesjetzt Teil des Kerns.Apparently (after going around this particular house) it's now part of core.
- 0
- 2017-07-10
- Chris Pink
-
- 2016-06-08
Diesistein kleiner Zweiliner,denich häufigmit wp_trim_words . Ichbrauche ständig die Abkürzung und lesemehr Funktionen außerhalb der Schleife. Jemand anderesmag diesnützlichfinden. Dasistes also,wasichbenutze,um:
- Holen Sie sich den Auszugnach POST-ID
- Post-Inhalt abrufen Wenn kein Auszugfestgelegt wurde,
- Legen Sie die Wortlänge des Auszugs fest
- Wählen Sie den Inhaltfür die Read More (Link/Text)
Ichfüge dies direktin diebenutzerdefinierte Vorlageein,dieichbearbeite.
//Get Post Object $dapost = get_post(POST_ID); //Get the Execerpt $my_excerpt = wp_trim_words( apply_filters( "the_excerpt", get_the_excerpt($dapost) ? get_the_excerpt($dapost) : $dapost->post_content ), "20", "<a href='$dapost->guid'> ".__('Get More Stuff', 'translation')."</a>" );
Zusammenbruch
1.Der Auszugsinhalt
Abrufnach Post-ID abrufen,aber Post-Inhalt abrufen Wenn kein Auszugfestgelegt wurde.
Ich verwende If/Else PHP-Kurzschrift .
$dapost = get_post(POST_ID); apply_filters( "the_excerpt", get_the_excerpt($dapost) ? get_the_excerpt($dapost) : $dapost->post_content
2. Wortlänge
Setzen Sie die Anzahl der Wörterim Auszug auf 20
"20"
3. Wählen Sie ReadMore Content (Link/Text)
"<a href='$dapost->guid'> ".__('Get More Stuff', 'translation')."</a>"
Ich habe
$dapost->guid
verwendet,um die URL abzurufen,daich keinebenutzerfreundlichen URLsbenötigte undeinen weiteren Aufruf der Datenbank vermeiden wollte. Sie könnenjederzeitget_the_permalink verwenden.Siehe wp_trim_words in der Wordpress-Dokumentation.
This is a little two-liner I use a lot utilizing wp_trim_words. I constantly finding myself needing the abbreviation and read more functionalities outside of the loop. Some one else may find this useful. So this is what I use to:
- Get the Excerpt by POST ID
- Get Post Content If no Excerpt has been set,
- Set the Word length of the Excerpt
- Choose the Content for the Read More(Link/Text)
I put this inline, directly in the custom template I am editing.
//Get Post Object $dapost = get_post(POST_ID); //Get the Execerpt $my_excerpt = wp_trim_words( apply_filters( "the_excerpt", get_the_excerpt($dapost) ? get_the_excerpt($dapost) : $dapost->post_content ), "20", "<a href='$dapost->guid'> ".__('Get More Stuff', 'translation')."</a>" );
Break Down
1.The excerpt content
Get the Excerpt by Post ID but, get Post Content If no Excerpt has been set.
I am using If/Else PHP shorthand.
$dapost = get_post(POST_ID); apply_filters( "the_excerpt", get_the_excerpt($dapost) ? get_the_excerpt($dapost) : $dapost->post_content
2. Word length
Set the amount of words in the Excerpt to 20
"20"
3. Choose ReadMore Content(Link/Text)
"<a href='$dapost->guid'> ".__('Get More Stuff', 'translation')."</a>"
I used
$dapost->guid
to get the URL, because I did not need friendly URLs, and wanted to avoid another call to the DB. You could always use get_the_permalink.See wp_trim_words in the Wordpress Documentation.
-
-
- 2018-09-07
Ab WP 4.5.0istesmöglich,die Post-ID als Parameter zu verwenden
get_the_excerpt( $post->ID )
Quelle: https://developer.wordpress.org/reference/functions/get_the_excerpt/
From WP 4.5.0 is possible use the post ID as parameter
get_the_excerpt( $post->ID )
Source:https://developer.wordpress.org/reference/functions/get_the_excerpt/
Warum kannman den Auszugnicht wiebeim Titel und denmeisten anderen Elementennach IDerhalten?
z.get_the_excerpt (ID). Ich weiß,wiemanesmit der Funktion $post->post_excerpt verwendet,aber dasgibt keinen Teil des Inhalts zurück,wenn kein Auszugeingegeben wurde. Esgibt einfachnichts zurück.
Ich versuche also,den Auszug anhand der ID abzurufen,wenneseinen Auszuggibt,und wennes keinen Auszugmit dieser IDgibt,abereinige Inhalte vorhanden sind,um stattdesseneinige Inhalte abzurufen.
Wie würdeman dasmachen.
Irgendwelche Ideen,
Wunderbar ...
BEARBEITEN -
Schleifenquellcode wie angefordert.