在特定位置将特定柱子插入/粘贴到环路中

时间:2013-04-18 作者:bob_hardy

我很难确定这件事的第一个方向。我正在尝试编写一个插件,允许用户选择一个位置将帖子插入主页。例如,用户可以将旧帖子“粘贴”到其首页的第二个位置。我的问题是,我不知道如何在特定点将帖子插入到循环中。我认为应该是以下内容(但很明显,我缺少插入文本):

$current_position = $_POST(\'current_postition\');
add_action (\'pre_get_posts\', \'add_post_to_frontpage\');
function add_post_to_frontpage ($query) {
  if ( $query->is_home() && $query->is_main_query() && $query->current_position = $positionlocation ) { 
        //insert a given post into this current_position
     $query->set( \'p=$desired_post\');
  }
}
谢谢

编辑:我以我认为合乎逻辑的方式添加了帖子,但我认为这会给我插入的帖子后面的帖子带来麻烦

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

这需要一些尝试和错误,但我想我明白了。我得到了一个无限循环,直到我加上suppress_filters. 在那之后,工作时间很短。

function insert_post_wpse_96347($posts) {
  global $wp_query;
  $desired_post = 151;
  if (is_main_query() && is_home() &&  0 == get_query_var(\'paged\')) {
    $p2insert = new WP_Query(array(\'p\'=>$desired_post,\'suppress_filters\'=>true));
    $insert_at = 3;
    if (!empty($p2insert->posts)) {
      array_splice($posts,$insert_at,0,$p2insert->posts);
    }
  }
  return $posts;
}
add_filter(\'posts_results\',\'insert_post_wpse_96347\');
这将迫使我硬编码的帖子进入位置3,再次硬编码。我不知道您是如何保存或计划保存配置值的,但这是基本的“插入”功能。这会将第一页的post计数增加到配置值以上,但在其他情况下,我可以确定的是会保留正常分页。它经过测试,但几乎没有。

结束

相关推荐

Modifying a Loop to Show More

此循环显示主题选项中指定的特定类别中超过4个帖子标题的一篇特色帖子。我想做的是显示4个标题中的所有4个帖子,在4个标题之上。这4个标题来自这段代码<a class=\"listtitle\" href=\"<?php the_permalink() ?>\" rel=\"bookmark\" title=\"<?php printf( esc_attr__( \'Permalink to %s\', \'wpnewspaper\' ), the_title_attribute( \