让用户在自定义循环中定义参数?(“$CUSTOM_POSTS->查询(...)”部分)

时间:2011-02-08 作者:janoChen

我使用以下方法从自定义帖子类型和自定义分类中检索帖子:

<?php // Create and run custom loop
    $custom_posts = new WP_Query();
    $custom_posts->query(\'post_type=blocks&location=Front Page&section=Mainbar\');
    while ($custom_posts->have_posts()) : $custom_posts->the_post();
?>
    <div class="block-2 border-top">
        <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<?php endwhile; ?>
在页面中,我想创建一些字段,让用户自定义循环参数,如下所示:

$custom_posts->query(\'post_type=blocks&location=<Enter Location>&section=<Enter Section>\');
最简单的方法是什么?

代码是什么样子的?

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

最简单的方法是创建一个简单的表单:

<?php $nonce= wp_create_nonce  (\'my-nonce\'); ?>
<form name="user-query" method="post">
<input type="hidden" name="_wpnonce" id="_wpnonce" value="<?php echo $nonce; ?>"/>
<p>Locations:
<select name="location" id"location">
  <option value="location1">location1</option>
  <option value="location2">location2</option>
  <option value="location3">location3</option>
  <option value="location4">location4</option>
</select></p>
<p>Sections:
<select name="section" id"location">
  <option value="section1">section1</option>
  <option value="section2">section2</option>
  <option value="section3">section3</option>
  <option value="section4">section4</option>
</select></p>
<input type="submit" name="create-query" value="create query"/>
</form>
并捕捉这些信息以供提交和处理

if (isset($_POST[\'create-query\'])){
    $nonce=$_POST[\'_wpnonce\'];
    if (! wp_verify_nonce($nonce, \'my-nonce\') ) die(\'Security check\');
    if (isset($_POST[\'location\']) && isset($_POST[\'section\']) ){
        $args = array(
            \'post_type\' => \'blocks\',
            \'location\' => $_POST[\'location\'],
            \'section\' => $_POST[\'section\']
        );
        $custom_posts->query($args);
    }
}
我会添加一些安全检查,但这应该可以让你继续。

结束

相关推荐