QUERY_POSTS中自定义帖子类型的ID参数是什么?

时间:2011-05-12 作者:Andrew Benbow

在管理部分,我使用quesry帖子来获取自定义帖子的标题和内容

此query\\u posts(\'post\\u type=sfnewsletter\');将获得我需要的内容,但不幸的是,我现在需要做的是通过表单传递自定义帖子的ID,然后检索该内容

我试过了

query_posts(\'p=32\');  
query_posts(\'page_id=32\');  
query_posts(\'page=32\');  
query_posts(\'sfnewsletter_id=32\');  
而且我不仅没有得到正确的自定义帖子,其中一些人还返回了ID为14的帖子(不是第一篇或最后一篇帖子)

我已经确认32是我试图获取的自定义帖子的正确ID。

这是表格

它正确传递ID

        <form method="post" action="<?php echo sfn_form_url(); ?>" >

            <table class="form-table">

                <tr valign="top"><th scope="row"><?php _e( \'To\', \'sfnewsletter\' ); ?></th>
                    <td>
                        <select name="sfnewsletter_to" id="sfnewsletter_to">
                        <option value="0">Please Choose</option>
                        <?php wp_dropdown_roles() ?>
                        </select>
                    </td>
                </tr>

                <tr valign="top"><th scope="row"><?php _e( \'Newsletter\', \'sfnewsletter\' ); ?></th>
                    <td>
                        <select name="sfnewsletter_newsletter" id="sfnewsletter_newsletter">
                        <option value="0">Please Choose</option>
<?php 
                        query_posts(\'post_type=sfnewsletter\'); 
                        if (have_posts()) : while (have_posts()) : the_post();

                            echo \'<option value="\' .get_the_ID(). \'">\' .get_the_title(). \'</option>\';

                        endwhile; endif;

?>
                        </select>
                    </td>
                </tr>

            </table>

            <p class="submit">
                <input id="sfnewsletter_hidden" class="regular-text" type="hidden" name="sfnewsletter_hidden" value="<?php esc_attr_e( \'SEND\' ); ?>" />
                <input type="submit" class="button-primary" value="<?php _e( \'Send Message\', \'sfnewsletter\' ); ?>" />
            </p>
        </form>
这就是我想到的解决方案。答案是我接受了正确的方法,但我的方法是胡说八道

好的,我已经想出了一个适合我的工作环境。

因为我似乎无法在查询中使用我的自定义帖子ID,所以我使用了表单中的ID并将其转换为永久链接,然后在查询中使用它,如下所示

    $sfnewsletter_slug = basename( get_permalink($sfnewsletter_newsletter) );

    $the_query = new WP_Query( array( \'post_type\' =>\'sfnewsletter\', \'posts_per_page\'=>1, \'name\'=>$sfnewsletter_slug ) );
这给了我想要的输出。

<小时>

2 个回复
最合适的回答,由SO网友:Milo 整理而成
query_posts(\'post_type=sfnewsletter&p=32\');
SO网友:Shelly

您发布的示例查询针对的是页面,而不是自定义帖子类型。“p”表示“post”帖子类型,“page\\u id”和“page”表示“page”帖子类型。

您的查询应该是:

query_posts(array(\'post_type\' => \'sfnewsletter\'));
这将抓住新闻稿的帖子。如果您想要一个特定的ID,那么在该查询中,您只需要请求

query_posts(array(\'post_type\' => \'sfnewsletter\'));
if(have_posts()) : while(have_posts()) : the_post(); 
$postid = $post->ID; // retrieves the post IDs within the Loop.

结束

相关推荐