如何从插件(而不是主题)修改循环

时间:2012-03-28 作者:Cilvic

我正在构建一个插件,用一些元信息设置一个自定义帖子类型。

我希望这些信息显示在循环中(尤其是主页上的信息)。

如何在不编写主题的情况下修改帖子模板。

我正在查看home\\u模板,但不推荐用于3.3

2 个回复
SO网友:helgatheviking

对于简单的元查询,可以执行以下操作:

function wpa_47150( &$query ) {
  if(!is_admin()){
    set_query_var(\'meta_key\', \'test_field\');
    set_query_var(\'meta_value\',\'bacon\');
  }
}
add_action(\'pre_get_posts\',\'wpa_47150\');
我不确定它是否会起作用,但显然,您也可以这样设置整个meta\\u查询对象

function wpa_47150( &$query ) { 

    if(!is_admin() && is_post_type_archive( \'test_post_type\' )){    
        $metaq = ( array ( array(
            \'key\' => \'test_field\',
            \'value\' => array( 10, 50 ),
            \'type\' => \'numeric\',
            \'compare\' => \'BETWEEN\'
            ))
        );
        set_query_var(\'meta_query\', $metaq );
    }
}

add_action(\'pre_get_posts\',\'wpa_47150\');
需要根据您的具体情况调整条件

SO网友:Cilvic

要仅显示设置了内容过滤器的字段,唯一的问题可能是为每篇文章加载自定义字段时会有一个单独的查询:

function muvice_custom_content($content) {
    if ( \'line\' == get_post_type() ) { 
        wp_enqueue_style( \'muvice_stylesheet\',plugin_dir_url(__FILE__).\'muvice.css\' );

        $custom_fields = get_post_custom(get_the_ID());

        $newcontent = \'<div class ="part_wrapper">\';
        $newcontent .=\'<div class="part1">\'.$custom_fields[\'part1\'][0].\'</div>\';
        $newcontent .=\'</div><!-- .part_wrapper -->\';

        $original = $content;
        $content = $original.$newcontent;
    }

    return $content;
}
add_filter(\'the_content\', \'muvice_custom_content\',1);

结束

相关推荐

排除QueryLoop中的类别和子类别

我想要一个排除某些类别及其子类别的QueryLop,我有这个: $args = array( \'category__not_in\' => array( 2, 6 ), ); 这排除了类别2和6,但没有其子类别,我能做什么?======更新=====我就是这么做的,但现在我正在寻找更好的解决方案: $excludes = array(2,6); $ex_childs = array