ID로 발췌문 가져 오기
-
-
콘텐츠의 "일부"가 정확히 무엇입니까?what exactly is "some" of the content?
- 0
- 2011-03-19
- kaiser
-
wordpress의excerpt 함수는 게시물의 발췌를 반환합니다.게시물에 발췌문이 없으면 콘텐츠의 특정 문자 수 뒤에 '...'또는 '더 읽기'또는 템플릿이 제공하는 모든 내용이 표시됩니다.The 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
-
PITA는 아니지만 커뮤니티 규칙은 서명 및 표준 마감을 허용하지 않습니다.규칙을 준수하고 모든 질문을 편집 한 후 [Jeff Atwood] (http://stackexchange.com/about/management)가 엄격한 메시지를 보내지 않도록하려면 * "Marvellous"*를 종료로 사용하지 마십시오.* (그리고 메신저를 쏘지 마세요) *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 대답
- 투표
-
- 2011-03-19
안녕하세요 @Robin I. Knight :
get_the_excerpt()
를 레거시 디자인의 함수로 봅니다.WordPress 사용이 증가함에 따라 적합하지 않지만 다른 데이터를 가져 오는 새로운 기능이 수행하는 새로운 사용 사례가 많이 있습니다.한 가지 예는 현재 함수 옵션의$args
배열을 자주 사용하는 것입니다.하지만 필요에 따라 쉽게 수정할 수 있습니다.다음은 테마의
functions.php
파일에 넣을 수있는 대체 함수입니다.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; }
테스트하지는 않았지만 제대로했다고 확신합니다.이것이 귀하의 요구를 충족하지 않는 경우 자세히 설명해 주시면 다른 제안을 할 수 있습니다.
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.
-
효과가있다.일종의.매우 이상한 결과.확실히 그 기능을 수행하고 있지만 결과는 이상합니다.나는 GET_Posts와 함께 사용하고 있으며 어떤 이유로 상위 2 개의get 게시물은 항상 동일합니다.여기에 링크가 있으며 내가 의미하는 바를 볼 수 있습니다.오른쪽에있는 4 개의 게시물을보십시오.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 : 질문에 대한 업데이트로 루프 소스 코드를 게시하십시오.코드를 보지 않고 코드를 디버깅하는 것은 매우 어렵습니다.문제를 일으키는 플러그인 일 수도 있습니다.한 번에 하나씩 비활성화하십시오.@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
-
위의 문제의 소스 코드를 루프 ^^Loop source code in question above ^^
- 0
- 2011-03-19
- Robin I Knight
-
BTW 함수 이름을get_the_excerpt_id ($post_id)로 변경했습니다.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-루프에 아무것도 보이지 않지만 @Rarst가 제안한 것처럼 루프 시작 부분에`setup_postdata ($post)`를 호출 해 볼 수 있습니다.작동하지 않으면 비활성화해야하는 플러그인 일 수 있습니다.당신은 그것을 시도 했습니까?그리고 워드 프레스가 앞으로 그 함수를 추가하고 사이트를 망가뜨릴 수 있기 때문에`get_the_excerpt_id ()`라고 부르고 싶지 않을 것입니다.그리고 아마도`foreach ($ stories as $ story) :global $post;대신 $post=$ story;`.@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
발췌 기법은 매우 혼란 스럽습니다.귀하의 질문에 대한 정확한 대답은 아니지만 일반적으로 Loop에 특정한 템플릿 태그를 만들고
get_posts()
에서 반환 된 배열로 작업해야하는 경우 다음과 같이 Loop를 에뮬레이트 할 수 있습니다.$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();
-
wp_reset_query ();는 어떻습니까??what about wp_reset_query(); ?
- 0
- 2012-01-27
- cwd
-
`setup_postdata ()`전역 쿼리 만 사용하는 경우 @cwd는 영향을받지 않으며 게시 데이터 만 재설정해야합니다.@cwd if only using `setup_postdata()` global query is not affected and only post data needs to be reset.
- 1
- 2012-01-27
- Rarst
-
이 솔루션은 포스트를 다른 var에 저장하고 글로벌화하기 위해 다른 포스트를 필요로하는 것보다 합금 클리너입니다.+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
-
나를 도와 준 @Rarst에게 감사드립니다.setup_postdata ($post); 추가내 문제를 해결Thanks @Rarst that helped me out. Adding setup_postdata($post); resolved my issues
- 0
- 2014-11-14
- Simon
-
- 2012-01-14
3.3.0 이후 새로운 기능이 있습니다. wp_trim_words
다음과 같이 루프 외부에서 사용하고 있습니다.
<?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 } } ?>
이것은 내부적으로the_content ()를 호출하기 때문에 분명히 루프 내에서만 작동하는 wp_trim_excerpt 와 혼동하지 마십시오..
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
MikeSchinkel의 답변에 추가하기 만하면됩니다. 어떤 이유로 든 저에게 적합하지 않습니다.작동하도록 setup_postdata 줄을 추가해야했습니다.
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;
}
루프 밖에서 이것을 사용한다면 다른 setup_postdata가 진행되는 것을 방해해서는 안된다고 가정합니다.
건배
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
-
MikeSchinkel의 답변을 시도했지만 저에게 효과가 없었습니다.포스트 데이터를 설정하는 것이 트릭이었습니다.내 경우에는 'setup_postdata'가 없으면 함수가 상위 게시물의 제목 + 발췌문을 반환했습니다.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
@Maxime의 답변을 기반으로하면 작동할까요?
$post = get_post( $id ); $excerpt = ( $post->post_excerpt ) ? $post->post_excerpt : $post->post_content;
정말 솔직한 것 같지만 뭔가 빠졌는지 궁금합니다.
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
전체 게시물에
<!--more-->
태그가있는 경우 위 코드와 함께 다음을 사용할 수 있습니다.$sjc_excerpt = explode( '<!--more-->', $post->post_content); echo wpautop( $sjc_excerpt[0] );
물론
<!--more-->
태그가없는 게시물이있는 경우 전체가 표시됩니다.내 상황에서 작동하지만 모두를위한 것은 아닙니다 ...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
get_the_excerpt()
를 레거시 디자인의 함수로 봅니다.WordPress 사용이 증가함에 따라 적합하지 않지만 다른 데이터를 가져 오는 새로운 기능이 수행하는 새로운 사용 사례가 많이 있습니다.한 가지 예는 현재 함수 옵션의$args
배열을 자주 사용하는 것입니다.하지만 필요에 따라 쉽게 수정할 수 있습니다.다음은 테마의
functions.php
파일에 넣을 수있는 대체 함수입니다.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; }
MikeSchinkel의 답변에 추가하기 만하면됩니다. 어떤 이유로 든 저에게 적합하지 않습니다.작동하도록하려면 setup_postdata 줄을 추가해야했습니다.
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.
-
루프 내에서 작동하려면`wp_reset_postdata ()`가 필요합니까?Does this need `wp_reset_post_data()` to work inside the loop?
- 0
- 2017-07-10
- Chris Pink
-
분명히 (이 특정 집을 돌아 본 후) 이제 핵심의 일부입니다.Apparently (after going around this particular house) it's now part of core.
- 0
- 2017-07-10
- Chris Pink
-
- 2016-06-08
이것은 wp_trim_words 를 활용하여 많이 사용하는 2 줄짜리입니다. 강함>. 나는 지속적으로 약어가 필요하다는 것을 발견하고 루프 외부에서 더 많은 기능을 읽습니다. 다른 사람이 유용하다고 생각할 수 있습니다. 그래서 이것이 제가 사용하는 것입니다 :
- POST ID로 발췌문 가져 오기
- 발췌문이 설정되지 않은 경우 게시물 콘텐츠 가져 오기
- 발췌 단어 길이 설정
- 자세히보기 (링크/텍스트) 콘텐츠 선택
내가 편집중인 맞춤 템플릿에 직접 삽입합니다.
//포스트 객체 가져 오기 $ dapost=get_post (POST_ID); //실행 가져 오기 $my_excerpt=wp_trim_words (apply_filters ( "the_excerpt",get_the_excerpt ($ dapost)?get_the_excerpt ($ dapost) : $ dapost- >post_content),"20","& lt; a href='$ dapost- >guid'> ; ".__ ( 'Get More Stuff','translation')."& lt;/a > ");
분석
1. 발췌 내용
발췌문을 게시물 ID로 가져 오지만 발췌문이 설정되지 않은 경우 게시물 콘텐츠를 가져옵니다.
If/Else PHP 약어를 사용하고 있습니다 .
$ dapost=get_post (POST_ID); apply_filters ( "the_excerpt",get_the_excerpt ($ dapost)?get_the_excerpt ($ dapost) : $ dapost- >post_content
2. 단어 길이
발췌 부분의 단어 수를 20 으로 설정
<사전> <코드> "20"3. ReadMore Content (Link/Text) 선택
"& lt; a href='$ dapost- >guid'>".__ ( 'Get More Stuff','translation'). "& lt;/a >"
$ dapost- >guid
를 사용하여 URL을 가져 왔습니다. 친숙한 URL이 필요하지 않았고 DB에 대한 또 다른 호출을 피하고 싶었 기 때문입니다. 언제든지get_the_permalink를 사용할 수 있습니다.Wordpress 문서의 wp_trim_words 를 참조하세요.
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
WP 4.5.0부터는 게시물 ID를 매개 변수로 사용할 수 있습니다.
get_the_excerpt( $post->ID )
출처 : 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/
왜 제목이나 대부분의 다른 요소와 마찬가지로 ID로 발췌 할 수없는 이유는 무엇입니까?
예 :get_the_excerpt (ID). $post->post_excerpt 함수와 함께 사용하는 방법을 알고 있지만 발췌문을 입력하지 않으면 내용의 일부를 반환하지 않습니다. 간단하게 아무것도 반환하지 않습니다.
그래서 내가하려는 것은 발췌가 있으면 ID로 발췌를 가져오고 해당 ID로 발췌가 없지만 일부 콘텐츠가있는 경우 일부 콘텐츠를 가져 오는 것입니다.
어떻게할까요?
모든 아이디어
놀라운 ...
수정-
요청 된 루프 소스 코드.