Надежда кто-то может помочь с этим. То, что я хочу, должно отобразить 5 вложений, но только 1 вложение из каждого сообщения от определенной категории на боковой панели, которая связывается с постоянной ссылкой сообщений.
Я использую следующий код до сих пор, который получает все вложения из всех сообщений, но некоторые сообщения имеют больше чем 1 вложение, и я просто хочу показать первый и связать его с постоянной ссылкой сообщения.
Таким образом, хотя предел является 5 сообщениями, если одно сообщение будет иметь 4 вложения затем в настоящее время, то это покажет 4 от одного, и 1 от другого в общей сложности 5, когда то, что я хочу, чтобы это сделало, будет просто показать 1 из каждого из 5 различных сообщений.
<?php
$args = array(
'post_type' => 'attachment',
'numberposts' => 5,
'post_status' => null,
'post_parent' => null, // any parent
'category_name' => 'work',
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $post) {
setup_postdata($post);
the_title();
the_permalink();
the_attachment_link($post->ID, false);
the_excerpt();
}
}
?>
Удачи. Dave
Спасибо за это. Я еще не тестировал его, но мне удалось заставить его работать, используя следующий код. Я ни в коем случае не программист PHP, поэтому я не уверен, какой метод лучше. Все, что я знаю сейчас, это то, что то, что у меня получилось, похоже, работает.
<?php query_posts('category_name=work&posts_per_page=10'); ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$args = array(
'order' => 'ASC',
'post_type' => 'attachment',
'post_parent' => $post->ID,
'post_mime_type' => 'image',
'post_status' => null,
'numberposts' => 1,
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
//echo apply_filters('post_title', $attachment->post_title);
echo "<li><a href='";
echo the_permalink();
echo "' title='";
echo the_title();
echo "'>";
echo wp_get_attachment_image($attachment->ID, 'thumbnail', false, false);
echo "</a></li>";
}
}
?>
<?php endwhile;?>
Спасибо, что попробовали!
Dave
Хорошо, я попробовал, правда не думаю, что есть какой-либо элегантный способ без использования пользовательского запроса;
$attachment_IDs = $wpdb->get_col(
"SELECT ID FROM $wpdb->posts WHERE
post_parent > 0 AND
post_type = 'attachment'
GROUP BY post_parent
ORDER BY post_date DESC
LIMIT 5"
);
if ($attachment_IDs) {
$attachments = get_posts(array('include' => implode(',', $attachment_IDs)));
// do what you like!
}
Запрос получает пять последних вложений, при этом каждое вложение имеет уникального родителя.
UPDATE:
Извините, только что понял, что вы хотели сделать запрос по категориям - добавьте этот большой старый join после SELECT;
INNER JOIN $wpdb->term_relationships ON
($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->term_taxonomy ON
($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
И добавьте это в предложение WHERE;
AND $wpdb->term_taxonomy.term_id IN (YOUR_CATEGORY_ID)