저는 집 (블로그 색인)에서 “추천 이미지”를 운없이 사용하려고했습니다. It ” 모든 페이지에서 작동하지만 가정에서는 작동하지 않습니다.
코드는 다음과 같습니다.
// Don"t use on single posts if (!is_single()) { if (is_home()) { if (function_exists("wp_get_attachment_thumb_url")) { $img = wp_get_attachment_image_src(get_post_thumbnail_id(),"full"); $featured_image = $img[0]; } } else { if (function_exists("wp_get_attachment_thumb_url") && has_post_thumbnail()) { $img = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),"full"); $featured_image = $img[0]; } } if ($featured_image) { ?> // A lot of code... <?php } }
이미 _thumbnail_id 메타를 사용하여 미리보기 이미지를 얻으려고했습니다. 동일한 결과입니다.
이 코드는 배치되었습니다. 함수 파일에서 문제는 “루프 / 게시물 추천 이미지를 얻으려는 것입니다.
미리 감사합니다.
답변
“게시물 페이지”를 참조하는 경우 다음을 시도하십시오 (코드의 관련 섹션 만 표시됨).
if (is_home() && get_option("page_for_posts") ) { $img = wp_get_attachment_image_src(get_post_thumbnail_id(get_option("page_for_posts")),"full"); $featured_image = $img[0]; } else {
답변
이 작업을 수행하는 모든 사람이 다음 조정을 고려할 것을 제안합니다.
-
get_queried_object()
를 사용하여 현재 페이지 / 게시물 / 색인의 ID를 가져옵니다. 페이지에 설정된 블로그 색인은 올바른 페이지 ID를 반환합니다. - 원하는 것이 전체 크기 이미지 인 경우 신
wp_get_attachment_url()
를 사용합니다. div id = “19f49efa13″>
다음은 “간단한 방법으로이 작업을 수행하는 데 사용하는 빠른 기능입니다.
/** * Custom Featured Image */ function custom_featured_image() { $queried_obj = get_queried_object(); // Don"t use on single posts (JUST FOR THIS DEMO) if ( is_single() ) return; // Get the featured image ID $image_id = get_post_thumbnail_id( $queried_obj->ID ); // Get the URL for the full sized image $image_src = wp_get_attachment_url( $image_id ); return $image_src; }
개인적으로 과도한 중첩 조건부 논리를 피하고 싶습니다. 함수를 사용하면 도움이 될 수 있습니다.
답변
루프에 the_post_thumbnail
를 사용하는 템플릿 파일을 통해 두 가지 빠른 옵션이 있습니다. 일반적인 블로그 형식으로 데이터를 출력한다고 가정하므로 위의 기능이 루프 내에서 작동하지 않거나 이상하게 작동하지 않을 것입니다.
대신 메인 루프가있는 실제 템플릿 파일에서 이와 같은 것을 시도해보십시오. (index.php 또는 loop.php) :
//loop starts if ( has_post_thumbnail() ) { the_post_thumbnail(); } //the_content(); and other stuff //loop ends
또는 메인 루프를 변경하는 대신 액션을 사용하려면
(예 : functions.php 파일)
예 :
add_action( "pre_get_posts", "add_featured_image" ); function add_featured_image( $query ) { if( $query->is_main_query() && $query->is_home() ) { //your image code } }
참고 위는 메인 쿼리와 홈페이지의 두 가지 매개 변수를 확인하는 것입니다. 기본 쿼리인지 확인하는 것이 매우 중요합니다. 그렇지 않으면 모든 쿼리가 변경됩니다.
참조 : http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
댓글
답변
작동합니다 ..
<section style="background-image: <?php if (is_home() && get_option("page_for_posts") ) { $blog_home_id = get_option( "page_for_posts" ); echo "url(".get_the_post_thumbnail_url($blog_home_id, "full").")"; } else { echo "url(".get_the_post_thumbnail_url($post->ID, "full").")"; } ?>;">
도움이되기를 바랍니다.
답변
“게시물 페이지”에있을 때 $ post는 루프의 첫 번째 “게시물”로 시작합니다. 한 가지 방법은 “쿼리 된 객체”를 사용하는 것입니다.
$ wp_query를 인쇄하면 다음과 같은 내용이 표시됩니다. [queried_object] [posts] [post]-참고 : queried_object는 일부 페이지에서 비어있을 수 있습니다. / p>
// get_the_post_thumbnail_url( get_queried_object(), "fullsize" ); // or function ABC_get_the_thumbnail_url() { $queried_object = get_queried_object(); $thumbnail_url = get_the_post_thumbnail_url( $queried_object, "fullsize" ); if ( ! $thumbnail_url ) { return get_template_directory_uri() . "/your-path/default-image.jpg"; // or from a default option } return $thumbnail_url; }
has_post_thumbnail()
는 page.php에서 잘 작동하는 것 같지만 index.php에서 사용하면false
를 반환합니다.