问题描述
我想在 WordPress Loop 中的帖子 (如’Sponsors’) 中添加一个帖子 (来自特定类别) 。例:
P P P S P P S P P S P P
我该如何实现?我是一个初学者编码,所以我不知道自己修改一个循环。任何循环编码 Ninjas 在那里可以提供一个解决方案?
请注意,以下是我当前的循环。它用于按价格或随机顺序排序帖子:
的 index.php
<?php while (have_posts() ) : the_post(); ?>
<h2><a href="<?php%20the_permalink()%20?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); the_meta ();
endwhile;
previous_posts_link();
next_posts_link();
?>
的 functions.php
function my_custom_query($query){
if ( $query->is_home() && $query->is_main_query() ) {
$sort= $_GET['sort'];
if($sort == "A"){
$query->set( 'orderby', 'rand' );
$query->set( 'posts_per_page', '2' );
}
if($sort == "B"){
$query->set( 'meta_key', 'price' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'DESC' );
$query->set( 'posts_per_page', '2' );
}
}
}
add_action( 'pre_get_posts', 'my_custom_query' );
编辑:更新
Birgire 的插件工程!最初,我有问题让插件在我的主题工作。问题是我在 index.php 中的循环中使用的这段代码 (我用它来调用自定义字段出现) 。
<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'price', true);
wp_reset_query();
?>
最佳解决方案
自动赞助者帖子注射器:
这是一个基于 my answer 的一个想法:How to show Y number of custom posts after every X normal posts?
我希望使它更有用的 here on Github,但它可能会改进更多 (未来的工作) 。
SponsorPostsInjector
课程将帮助您使用过滤器 the_post
,loop_start
和 loop_end
自动将赞助商帖子注入主题。
激活插件并将以下示例添加到 functions.php
文件中以开始注入:
/**
* Inject a sponsor post after the first post on the home page,
* and then again for every third post within the main query.
*/
add_action( 'wp', 'my_sponsor_injections' );
function my_sponsor_injections()
{
if( ! class_exists( 'SponsorPostsInjector' ) ) return;
// We want the sponsor posts injections only on the home page:
if( ! is_home() ) return;
// Setup the injection:
$injector = new SponsorPostsInjector(
array(
'items_before_each_inject' => 3,
'items_per_inject' => 1,
'template_part' => 'content-sponsor',
)
);
// Setup the injection query:
$injector->query(
array(
'post_type' => 'sponsor',
'tax_query' => array(
array(
'taxonomy' => 'country',
'terms' => 'sweden',
'field' => 'slug',
)
)
)
);
// Inject:
$injector->inject();
}
我们在当前主题目录中创建了 content-sponsor.php
模板文件,以控制注入的赞助商帖子的布局。
这个想法是,这也应该照顾分页。
您可以希望根据您的需要调整。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。