Not: query_post
'u kullanmayın. WP_Query
veya get_posts
kullanın.
Lütfen bir tartışma konusuna bakın: When to use WP_query(), query_posts() and pre_get_posts.
Sayfanızdaki tüm yayınlar tabanını oluşturmak için sorununuzla ilgili örnek yaklaşımı, sonra da daha sonra kullanmak için kısa kodla görüntüleyin. Bir Fonksiyonun içerisinde
- , sen
- sorgu döngü içine sonrası kimliği ile ilgili kategoriyi alın, (
wp_query
veya get_posts
kullanın) ilk gönderilen tüm mesajları sorgulaması gerekir. Taksonomi terimi ise get_the_terms
'u kullanın.
- İletileri gruplamak için anahtarlı bir sorgu verisi dizisi oluşturun (bu durumda, terimli terim kullanırız).
- Sonra bu verileri dış döngü için alın ve basit döngü ile çıktı.
add_shortcode
numaralı telefona göre bir kısa kod oluşturun (bu kod sadece basit bir kısa kod kullanır).
/** Shortcode [my_shortcode_posts] */
add_shortcode('my_shortcode_posts', 'so36133962_get_all_posts_by_category');
/**
* All posts by category
* build query by get_posts
*
* @return string|null
*/
function so36133962_get_all_posts_by_category($attr, $content = null)
{
/**
* Build custom query
*
*/
$args = array(
'post_type' => 'your-post-type', // set your custom post type
'post_status' => 'publish',
'posts_per_page' => -1,
/** add more arguments such as taxonomy query i.e:
'tax_query' => array(array(
'taxonomy' => 'genre', // set your taxonomy
'field' => 'slug',
'terms' => array('comedy','drama') // set your term taxonomy
))
*/
);
$posts = new WP_Query($args);
/**
* Prepare Posts
*
*/
$result = array();
// The Loop
if ($posts->have_posts())
{
while ($posts->have_posts())
{
$posts->the_post();
/**
* Get all item in a term taxonomy
*
*/
$categories = get_the_terms(get_the_ID(), 'your-taxonomy' /* set your term taxonomy */);
if (! $categories)
continue;
foreach ($categories as $key => $category)
{
$term_name = $category->name;
$term_slug = $category->slug;
$term_id = $category->term_id;
}
/**
* Set thumbnail background cover
* Use Featured Image
*/
$img_cover = '';
if (has_post_thumbnail())
{
$image_url = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()));
if (! empty($image_url[0]))
{
$img_cover = '<span class="img" style="background:url(' . esc_url($image_url[0]) . ') no-repeat center center; background-size:cover;">';
}
}
/**
* Format html content
*
*/
$format = '<a href="%1$s" title="%2$s" class="post-%3$s">%4$s%2$s</span></br><span class="content-%3$s">%5$s</span></br><span class="more">%6$s</span></a>';
/**
* Formatted string post content
*
*/
$content = sprintf($format,
get_permalink(),
get_the_title(),
get_the_ID(),
$img_cover,
get_the_excerpt(),
__('Read More', 'text-domain')
);
/**
* Set an array of each post for output loop
*
*/
$result[ $term_slug ][] = array(
'post_id' => get_the_ID(),
'post_content' => $content,
'term_name' => $term_name,
'term_id' => $term_id
);
}
}
wp_reset_postdata(); // post reset
/**
* Check existing output
*
*/
if (! $result)
return;
/**
* Output loop
*
*/
$output = '';
foreach ($result as $slug => $data)
{
$count = count($data);
for ($i = 0; $i < $count; $i++)
{
/**
* Set data as object
*
*/
$post = (object) array_map('trim', $data[ $i ]);
if (0 == $i)
{
/**
* Set category id and name
*
*/
$output .= '<div id="term-category-' . absint($post->term_id) . '">';
$output .= '<h3>' . esc_html($post->term_name) . '</h3>';
}
/**
* Set post id and content
*
*/
$output .= '<div id="post-' . absint($post->post_id) . '"><p>' . $post->post_content . '</p></div>';
}
$output .= '</div>';
}
return $output; // complete
}
İhtiyaçlarınıza olarak eleman yapılarını değiştirebilir. Not olarak, bu kodla birlikte, her bir kategoride çift gönderi yok ve kodda yorumlandığı gibi posta türü ve taksonomi gibi değerleri değiştirdiğinizden emin olun. Umarım bu yardımcı olur.
Kod için teşekkürler ve kodun açıklaması için teşekkürler! Bugün bir şey öğrendim :) – Nielsvandijkje
@Nielsvandijkje, projenizde iyi şanslar. – Jevuska