2012-01-11 1 views
0

Wordpress에서 첨부 파일이있는 게시물에 대해서만 jQuery 갤러리 용 스크립트를 대기열에 추가하려고합니다. Wordpress - 루프에 첨부 파일이있는 게시물이 있는지 확인 하시겠습니까?

나는 하나의 게시물 작동이 간단한 기능을 가지고 :

function gotImages() 
{ 
    $attachments = get_children(array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image')); 
    return (!empty($attachments) ? true : false); 
} 

내가 functions.php에서 gotImages()를 호출 할 때 여러 게시물과 함께 홈 페이지에 첨부 파일이있는 하나의 게시물에 대한 사실이지만 false를 반환 첫 번째 게시물에 첨부 파일이없는 경우

어떻게 수정하여 두 개 이상의 게시물, 즉 10 개의 게시물을 표시하는 홈 페이지에서 작동합니까?

감사합니다.

답변

0

마지막으로 거친 작동 해결책을 찾아 냈습니다. 그것은 아마도 최종 버전이 아니지만 여기에 관심이있을만한 사람을위한 나의 해결책이 있습니다.

function gotImages() 
{ 
    global $wp_query; 
    $posts = $wp_query->posts; 

    if (empty($posts)) 
    return $posts; 

    $searchImages = '~<img [^>]* />~'; 

    foreach ($posts as $post) { 
     $content = $post->post_content; 
     preg_match_all($searchImages, $content, $countImages); 
     $images += count($countImages[0]); 
    } 
    return ($images >= 1 ? true : false); 
} 

전류 루프의 내용을 읽고 <IMG> 태그를 검색합니다 functions.php에 넣을 경우이 기능. 하나 이상의 태그가 발견되면 true를 반환하고 그렇지 않으면 false를 반환합니다.

이제 이미지에 어떤 게시물이 있는지에 따라 조건부로 스크립트 또는 스타일 시트를 대기열에 추가 할 수 있습니다.

이 같은 예를 들어

if(!is_admin() && gotImages() == true) : 
    wp_register_script('fancybox', get_stylesheet_directory_uri() . '/libs/fancybox/jquery.fancybox.pack.js', array('jquery'), false, true); 
    wp_register_script('fancybox.init', get_stylesheet_directory_uri() . '/js/init/lightbox.init', array('fancybox'), false, true); 

    wp_enqueue_script('fancybox'); 
    wp_enqueue_script('fancybox.init'); 
endif; 

잘 모르겠어요 아직 지금은 그것의 큰 문제가되지 않습니다 그래서 '비용'이 기능을하지만 난 그것에 일하고 있어요 사이트 아주 작은 방법 프로세스 시간에 몇 ms를 추가합니다.

0

10 개의 게시물 각각을 표시 할 때 홈페이지에서 반복한다면 원하는대로 결과를 생성해야합니다. 여러 게시물에서 작동하는지 여부는 슬라이드 쇼를 실행하는 데 사용하는 CSS 선택기에 따라 다릅니다. CSS ID를 사용하는 경우 동일한 ID를 가진 여러 요소가 있기 때문에 HTML이 유효하지 않습니다.

+0

루프의 첫 번째 게시물을 확인하는 것 같습니다. 나는 1 개 이상 있다면 나머지를 통해 루프하는 방법을 알아낼 필요가있다. 함수로부터의 복귀는 Wordpress가 자바 스크립트를 큐에 넣어야 할지를 결정하거나 클래스 나 ID와는 아무 관계가 없다. – Brigante

+0

@Johannes 홈페이지에 PHP를 게시 할 수 있습니까? – dyelawn

+0

지금은 내 컴퓨터가 아니지만 기본 Twentyeleven 테마입니다. Btw functions.php에서 함수를 호출하여 루프 외부에 있도록합니다. – Brigante

관련 문제