2016-10-04 2 views
0

Я довольно новичок в Wordpress, и я пытаюсь создать функцию, которая загружает изображения под категорию медиа. В категории медиа есть пуля, которую я хочу передать в функцию. Если есть более простой способ сделать это, пожалуйста, дайте мне знать. Ниже мой код до сих пор:Получить изображения по slug в Wordpress

functions.php

function get_image_by_slug($slug) { 
    $query_images_args = array(
    'post_type' => 'attachment', 
    'post_mime_type' =>'image', 
    'post_status' => 'inherit', 
    'posts_per_page' => -1, 
    'tax_query' => array(
    array(
     'taxonomy' => 'attachment_category', 
     'field' => 'slug', 
     'terms' => $slug, 
    ), 
), 
); 
$query_images = new WP_Query($query_images_args); 

$images = array(); 
foreach ($query_images->posts as $image) { 
    $images[]= $image->guid; 
} 

return $images; 
} 

function display_image_by_slug() { 
    $imgs = get_image_by_slug($slug); 
    $html = '<ul class="list-inline">'; 

    foreach($imgs as $img) { 

     $html .= '<li><img src="' . $img . '" alt="" /></li>'; 

    } 

    $html .= '</ul>'; 

    return $html; 
} 

add_filter('display_slugs','display_image_by_slug'); 

В странице

<?php apply_filter('display slugs', 'test_slug');?> 

ответ

0

Итак, просмотрев документы Wordpress и поняв ответ Нареша, я смог придумать свой собственный ответ. Вот он ...

  $id = 'YOUR SLUG'; 
      $args = array(
       'post_type' => 'attachment', 
       'post_status' => 'any', 
       'posts_per_page' => -1, 
       'tax_query' => array(
        array(
         'taxonomy' => 'media_category', // your taxonomy 
         'field' => 'slug', 
         'terms' => $id // term id (id of the media category) 
        ) 
       ) 
      ); 
      $the_query = new WP_Query($args); 

      if ($the_query->have_posts()) { 
       while ($the_query->have_posts()) { 
        $the_query->the_post(); 
        echo '<li>'. wp_get_attachment_image(get_the_ID()); 
        if(empty_content(get_the_content())){ 
         echo '<p>' . get_the_excerpt() . '</p></li>'; 
        } else { 
         echo '<p><a href="' . get_the_content() . '">' . get_the_excerpt() . '</a></p></li>'; 
        } 
       } 
      } else { 
       // no attachments found 
      } 

      wp_reset_postdata(); 
0

прикрепление изображения или файла только после с post_status = inherit и post_type = attachment и ему сохраняется в wp_post & wp_postmeta, поэтому может быть запрошен WP_Query или get_posts.

Примечание: Слизняк (POST_NAME) является уникально за post type.

Вы должны передать свою пулю в запрос, заменив YOUR-SLUG на этом месте. &name=YOUR-SLUG

$_head = get_posts('post_type=attachment&name=YOUR-SLUG&posts_per_page=1&post_status=inherit'); 
$header = $_head ? array_pop($_head) : null; 
$header_url = $header ? wp_get_attachment_url($header->ID) : ''; 

Другого метод вы можете создать свою собственную пользовательскую функцию с помощью, что я предоставленная ниже.

function get_attachment_url_by_slug($slug) { 
    $args = array(
    'post_type' => 'attachment', 
    'name' => sanitize_title($slug), 
    'posts_per_page' => 1, 
    'post_status' => 'inherit', 
); 
$_head = get_posts($args); 
$header = $_head ? array_pop($_head) : null; 
return $header ? wp_get_attachment_url($header->ID) : ''; 

, а затем вы можете позвонить, используя эту функцию.

$header_url = get_attachment_url_by_slug('YOUR-SLUG'); 
+0

Однако я не просто извлекаю одно изображение, но вместо этого хочу получить все изображения с этой пулей. У меня есть 3 изображения под заголовком категории «тест». – Elli

+0

Измените 'posts_per_page = -1', и он доставит вам все данные, которые доступны в slug категории мультимедиа, которые у вас есть. –

+0

@Elli. Если так, после применения этого, вы столкнетесь с общей ошибкой, и мы обсудим вашу стратегию получения изображения. –

Смежные вопросы