有没有可能用一个动作/过滤器来完全取代一篇文章?

时间:2016-02-26 作者:Thierry

目前,我正在尝试替换$post 全局,在wp 行动然而,即使在模板中,输出时也会显示正确的post数据$post, 实际输出内容未更新。我追溯了整个the_content 功能,但我找不到任何异常。

这可能吗?如果可能的话,我错过了什么?

1 个回复
SO网友:Aishan

您可以尝试使用pre\\u get\\u posts

add\\u action(\'pre\\u get\\u posts\',\'alter\\u query\');

函数alter\\u query($query){//获取全局查询var对象global$wp\\u query;

//gets the front page id set in options
$front_page_id = get_option(\'page_on_front\');

if ( \'page\' != get_option(\'show_on_front\') || $front_page_id != $wp_query->query_vars[\'page_id\'] )
    return;

if ( !$query->is_main_query() )
    return;

$query-> set(\'post_type\' ,\'page\');
$query-> set(\'post__in\' ,array( $front_page_id , [YOUR SECOND PAGE ID]  ));
$query-> set(\'orderby\' ,\'post__in\');
$query-> set(\'p\' , null);
$query-> set( \'page_id\' ,null);

//we remove the actions hooked on the \'__after_loop\' (post navigation)
remove_all_actions ( \'__after_loop\');
}

相关推荐

WooCommerce:Pre_Get_Posts中的复杂查询

我想在获取产品时添加一个复杂的过滤。我有一些产品,其中一些链接到自定义帖子类型</此自定义帖子类型有一个转发器字段根据cookie的不同,我应该只获取在此转发器字段中具有该值的产品,我知道我可以使用:add_filter( \'pre_get_posts\', \'fwp_archive_per_page\' ); 我知道我可以像这样设置额外的元查询:$query->set( \'meta_query\', array( \'relation\' => \'