在模板文件中工作时,functions.php内部的查询不返回帖子

时间:2018-12-28 22:46:04

标签: php wordpress

需要在function.php中提取自定义帖子类型的标题和ID 如果在页面模板中使用以下代码,则可以正常工作。但不会在functions.php中返回任何内容

<select name="feat_pop" value="<?php echo $feat_pop; ?>">
    <option value="none">None</option>
    <?php
        global $post;
        $popargs = array(                        
                            'posts_per_page' => -1, 
            'post_type' => 'popups'
        );
            $newpop = new WP_Query( $popargs );
        if ( have_posts() ) while ($newpop->have_posts()) : $newpop->the_post();
    ?>
            <option value=""><?php the_title();?></option>
    <?php
        endwhile; 
        wp_reset_postdata();
    ?>
</select>

错误日志中的唯一错误-“ Got错误'PHP消息:PHP解析错误:语法错误,文件意外结束”但指定的行没有任何内容。

1 个答案:

答案 0 :(得分:1)

似乎您正在混淆代码have_posts的方法。您应该在WP_Query()上运行该方法。您也不需要在此处实例化全局$post变量。最后,您似乎没有在任何地方将ID实际拉入输出中吗?我假设您想要它作为值-试试这个:

<select name="feat_pop" value="<?php echo $feat_pop; ?>">
    <option value="none">None</option>
    <?php
        $popargs = array(                        
            'posts_per_page' => -1, 
            'post_type'      => 'popups'
        );

        $newpop = new WP_Query( $popargs );

        if( $newpop->have_posts() ){
            while( $newpop->have_posts() ){
                $newpop->the_post();                    
                echo '<option value="'. get_the_ID() .'">'. get_the_title() .'</option>';
            }
        }

        wp_reset_postdata();
    ?>
</select>