갤러리 단축 코드에서 이미지 제목 / alt 속성 가져 오기
1 대답
- 투표
-
- 2015-04-26
약간 배경 : WP는 게시물과 동일한 데이터베이스 테이블에 첨부 파일을 저장합니다. 따라서 테이블 행은 미디어 편집 모달의 필드에 해당합니다.
get_post_gallery_images
는 이미지에 대한 URL을 반환하지만 데이터베이스의 실제 데이터는 반환하지 않습니다. 역 쿼리를 수행하고 이미지 URL이 포함 된 게시물을 찾을 수 있습니다. 그러나 그것은 필요 이상으로 어려울 것입니다.대신 get_post_gallery 함수를 사용하세요. 이것은 실제로
get_post_gallery_images
에서도 사용되지만 배열의 첨부 파일 ID도 반환합니다. 다음 ID를 사용하여get_posts
를 사용하여 데이터베이스에서 정보를 가져옵니다.<?php $gallery = get_post_gallery( get_the_ID(), false ); $args = array( 'post_type' => 'attachment', 'posts_per_page' => -1, 'post_status' => 'any', 'post__in' => explode( ',', $gallery['ids'] ) ); $attachments = get_posts( $args ); foreach ( $attachments as $attachment ) { $image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true); if ( empty( $image_alt )) { $image_alt = $attachment->post_title; } if ( empty( $image_alt )) { $image_alt = $attachment->post_excerpt; } $image_title = $attachment->post_title; $image_url = wp_get_attachment_image_src( $attachment->ID, 'full' ); echo '<div class="one-third columns gallery-item">'; echo '<div class="item-picture" data-type="image">'; echo '<img src="' . $image_url[0] . '" alt="'. $image_alt .'">' ; echo '<div class="image-overlay">'; echo '<a href="' . $image_url[0] . '" data-rel="prettyPhoto[gallery]"> <span class="zoom"></span></a>'; echo '</div>'; echo '<span class="item-label">' . $image_title . '</span>'; echo '</div>'; echo '</div>'; } ?>
스크립트는 값을 찾을 때까지
_wp_attachment_image_alt
,post_title
및post_excerpt
에서 대체 태그 정보를 찾습니다.A little background: WP stores the attachments in the same database table as posts. Therefore the table rows correspond to the fields of the media edit modal:
get_post_gallery_images
will return you URLs to the images, but not the actual data in the database. You could do a reverse-query and look for posts that contain the image URL but that would be more difficult than necessary.Instead use the get_post_gallery function. This one is actually used by
get_post_gallery_images
too, but also returns the IDs of the attachments in an array. Use these IDs to get the information from the database usingget_posts
:<?php $gallery = get_post_gallery( get_the_ID(), false ); $args = array( 'post_type' => 'attachment', 'posts_per_page' => -1, 'post_status' => 'any', 'post__in' => explode( ',', $gallery['ids'] ) ); $attachments = get_posts( $args ); foreach ( $attachments as $attachment ) { $image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true); if ( empty( $image_alt )) { $image_alt = $attachment->post_title; } if ( empty( $image_alt )) { $image_alt = $attachment->post_excerpt; } $image_title = $attachment->post_title; $image_url = wp_get_attachment_image_src( $attachment->ID, 'full' ); echo '<div class="one-third columns gallery-item">'; echo '<div class="item-picture" data-type="image">'; echo '<img src="' . $image_url[0] . '" alt="'. $image_alt .'">' ; echo '<div class="image-overlay">'; echo '<a href="' . $image_url[0] . '" data-rel="prettyPhoto[gallery]"> <span class="zoom"></span></a>'; echo '</div>'; echo '<span class="item-label">' . $image_title . '</span>'; echo '</div>'; echo '</div>'; } ?>
The script looks for alt-tag info in
_wp_attachment_image_alt
,post_title
andpost_excerpt
until it finds a value.-
안녕 Jan은 귀하의 도움과 세부 사항에 대해 감사드립니다.갤러리 이미지/사후 메타 데이터를 가져 오는 데 여전히 문제가 있지만 페이지에서 결과가 반환되지 않습니다.image_url은 갤러리 이미지의 URL을 어떻게 얻습니까?`$image_url=post_guid;`설정을 성공하지 못했습니다.explode 함수는 문자열 (이미지 ID)을 가져 와서get_posts 및get_post_meta에서 사용하는 배열로 바꾸는 것입니다.몇 가지 단서에 대해서도 코덱스를 참조합니다. [https://codex.wordpress.org/Function_Reference/get_post_gallery] 및 [https://codex.wordpress.org/Function_Reference/wp_get_attachment_image]Hi Jan thanks so much for your help and augmenting details. Still having trouble getting the gallery images/post-meta, the page returns no results. How does image_url obtain the url of the gallery image? I tried setting `$image_url = post_guid;` to no success. The explode function is taking a string (image IDs) and turning this into an array used by get_posts and get_post_meta, yes? I'm reference the codex too for some clues: [https://codex.wordpress.org/Function_Reference/get_post_gallery] and [https://codex.wordpress.org/Function_Reference/wp_get_attachment_image]
- 0
- 2015-04-26
- ccbar
-
나는 너트이고 실제로image_url을 포함하는 것을 잊었습니다.그 죄송합니다.답변을 업데이트했습니다.`wp_get_attachment_image_src`는 url,width,height 및 "boolean : $ url이 크기가 조정 된 이미지이면true,원본이거나 사용 가능한 이미지가 없으면false"를 포함하는 배열을 반환합니다.I'm a nut and actually forgot to include image_url. Sorry for that. I have updated the answer. Note that `wp_get_attachment_image_src` returns an array that contains the url, width, height and "boolean: true if $url is a resized image, false if it is the original or if no image is available."
- 0
- 2015-04-27
- Jan Beck
-
안녕하세요 Jan 님,여전히 빈 페이지 결과입니다.또한 결과를 얻을 수 있는지 확인하기 위해 미디어 라이브러리 내의 기존 이미지가 아닌 새 이미지를 업로드해야하는지 확인하기 위해 새 갤러리에 새 이미지를 추가하려고 시도했지만 아니요.그래서 여전히 PHP를 배우고 있지만`$image_url [0]`은 ID가 전달 될 때까지null로 설정하는 것을 의미합니까?안정적으로 작동하는 유일한 것은 내 첫 번째 질문에서와 같이 갤러리에 대한 단축 코드를 얻는 것입니다. 단지 제목을 얻을 수 없습니다.Hi Jan, still empty page results. I also tried adding new images to a new gallery to see if I needed to upload new images, not existing images within media library, in order to see if I could get any results, but no. So still learning php but `$image_url[0]` means to set to null until the ID is passed? the only thing that's worked reliably is getting the shortcode for gallery as in my first question, just can't get the darn title.
- 0
- 2015-04-27
- ccbar
-
따라서 계산은 0부터 시작해야합니다. 빈 대괄호 []를 사용하여 이미지 ID를 전달할 수 있습니까?`$image_url [0]`대`$image_url []`So does the counting have to start from 0, can I have an empty bracket[] and still have image IDs passed though it? `$image_url[0]` vs `$image_url[]`
- 0
- 2015-04-27
- ccbar
-
나중에 시도해 보겠습니다. 한편 https://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src 설명서를 살펴보십시오.I'll try it later, meanwhile have a look at the documentation https://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src
- 0
- 2015-04-27
- Jan Beck
-
훌륭한!감사합니다,드디어 얻었습니다.[0]은 배열의 첫 번째 인덱스 인 ID를 지정합니다.차이가 있다면 개인적으로 테스트 페이지 링크를 보내드릴 수 있습니다.Terrific! thank you, I finally get it. [0] specifics the first index of the array, the ID. privately I could send you a link to the test page, if that makes any difference.
- 0
- 2015-04-28
- ccbar
-
알아 내셔서 다행입니다.[0]은 실제로 이미지에 대한 직접 URL을 포함하는 배열의 첫 번째 인덱스입니다.내 개발 환경에서 코드를 실행 한 결과get_post_gallery에 'false'로 설정된 두 번째 매개 변수가 필요하다는 것을 알았습니다. 그렇지 않으면 배열이 아니라 갤러리의 html을 반환합니다.나는 그것을 반영하기 위해 원래 답변을 편집했습니다.Glad you figured it out. [0] is indeed the first index of the array that contains the direct URL to the image. I ran the code in my dev environment and notices that get_post_gallery needs a second parameter set to `false` otherwise it will not return an array but html of the gallery. I edited the original answer to reflect that.
- 0
- 2015-04-28
- Jan Beck
-
예이!효과가있다!감사합니다.-위의 코드는 어떤 이유로 아직 편집되지 않았습니다.하지만 정답이 맞는지 확인하겠습니다.Yay! it works! Thank you. -- the code above isn't yet edited, for some reason. But as soon as it is, I'll check the answer as correct.
- 0
- 2015-04-28
- ccbar
-
지금 변경해야합니다.도와 드릴 수있어서 다행입니다.should be changed now. Glad I could help you out.
- 0
- 2015-04-29
- Jan Beck
-
매우 감사히 생각한다!공유해도 될까요?Greatly appreciated! May I share it?
- 0
- 2015-04-29
- ccbar
-
무엇을 공유 하시겠습니까?내가 준 대답?Share what? The answer I gave?
- 0
- 2015-04-29
- Jan Beck
-
원하는대로 자유롭게 할 수 있습니다. :)Feel free to do whatever you want with it :)
- 0
- 2015-05-05
- Jan Beck
-
예,당신은 대답합니다. 매우 필요하고 도움이됩니다.감사합니다.Yes, you answer, so much needed and helpful. Thank you.
- 0
- 2015-05-21
- ccbar
(다른 사용자 지정 중에서) WordPress 내에서 이미지 갤러리를 사용자 지정할 수 있도록 PHP를 코딩하는 방법을 배우려고합니다.
내가 가지고있는 코드는 양식화 된 갤러리 페이지에 적합하지만 WP 갤러리 내에서 이미지의 제목 및 대체 속성을 가져 오는 방법을 파악하는 데 어려움을 겪습니다 ( 이미지가 갤러리 기능에 있기 때문에 게시물의 첨부 파일로 보이지 않기 때문입니다.
갤러리에 WP 내장 기능을 사용하고 싶기 때문에 WP 갤러리를 사용하고 싶습니다.
어떤 도움을 주시면 감사하겠습니다 ... 이것이 가장 멍청한 일입니까,아니면 무엇입니까?
참고 : 이전 첨부 파일에서 WP 갤러리를 사용하지 않을 때 페이지에서 이미지를 편집하려고 할 때get_attachment 또는get_children도 비참했습니다. 페이지에서 제거 된 하위 항목이 여전히 표시됩니다.) .