Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 限制从WP#u查询或'返回的wordpress字段;获取';功能_Loops_Slug_Wordpress - Fatal编程技术网

Loops 限制从WP#u查询或'返回的wordpress字段;获取';功能

Loops 限制从WP#u查询或'返回的wordpress字段;获取';功能,loops,slug,wordpress,Loops,Slug,Wordpress,希望限制WP查询的返回字段,以帮助加快服务器的响应速度并减少检索的数据量。对于我正在使用的查询,它最多只需要3个字段的数据,其余的通过循环中的ACF get_field_对象引入。我正在使用的其他函数,如get_posts或get_terms,都有字段选项,但仅限于少量内容,如'slug'only或'id=>slug' 我习惯于使用CakePHP进行开发,它可以选择指定要返回的每个字段,但该项目需要wordpress提供其他功能,因此我的能力非常有限 TL;DR需要加快从Wordpress获取帖

希望限制WP查询的返回字段,以帮助加快服务器的响应速度并减少检索的数据量。对于我正在使用的查询,它最多只需要3个字段的数据,其余的通过循环中的ACF get_field_对象引入。我正在使用的其他函数,如get_posts或get_terms,都有字段选项,但仅限于少量内容,如'slug'only或'id=>slug'

我习惯于使用CakePHP进行开发,它可以选择指定要返回的每个字段,但该项目需要wordpress提供其他功能,因此我的能力非常有限


TL;DR需要加快从Wordpress获取帖子的速度,因为WP\u查询将返回对象,所以速度非常快。但是,如果您真的想限制返回的内容,可以使用
WP\u查询

来限制WP\u查询中的字段,特别是当我想要对字段进行json\u编码时。
$return
变量包含我的帖子数组,其中只有
$fields
数组中列出的字段

    $query = new WP_Query( array( 'post_type' => 'my_custom_type' ) );
    $return = array();  
    $fields = array('post_title', 'ID');  //list of fields I want in $return
    $posts = $query->get_posts();
    foreach($posts as $post) {
        $newPost = array();
        foreach($fields as $field) {
            $newPost[$field] = $post->$field;
        }
        $return[] = $newPost;
    }

我在查询中使用了fields参数,并在此查询中运行get posts。 例如:在我的例子中,我只需要获取多个类别的帖子ID,因此我创建了如下查询:

$the_query = new WP_Query( array( 
                        'ignore_sticky_posts' => 1,
                        'posts_per_page'      => -1,
                        'cat'                 => '2,6,7' ,
                        'fields'              => 'ids',
                        'post_type'           => 'post',
                        'post_status'         => 'publish', 
                                ) 
                        );
在此查询上运行get_帖子:

$posts = $the_query->get_posts();
$posts将仅获取特定类别posts的ID

或者也可以通过标准和流行的方式完成,即通过运行have_posts的循环:

if ( $the_query->have_posts() ) {
        while ( $the_query->have_posts() ) {
            $the_query->the_post();
            $post_id_array[] = get_the_ID(); 
        }           
    }

这两种方法有助于加快服务器的响应速度并减少检索到的数据量

我不知道这会有多大帮助,但下面是我如何从CPT中获得扁平阵列。这不是最快的,但可能更糟。我使用ACF获取自定义字段,但您可以只获取slug,也可以获取多个字段:

// Query Jobs Args
$query_args = array(
    'post_type' => 'job',
    'posts_per_page' => -1,
    'fields' => 'ids'
);

// Get Jobs Query
$query = new WP_Query($query_args);

// Loop Persistent Vars
$job_ids = array();

// Loop Over Jobs
foreach($query->posts as $post_id) {
    $job_ids[] = get_field('job_id', $post_id);
}

// Do stuff with flattened array of job ids

田地是什么?它们都是自定义的吗?我想查看的字段是默认字段,如“post_content”、“guid”、“post_modified”等。我可能会问与您上面引用的相同的问题,但为他提供的答案与我的需要不符。他的回答提供了一种在WP_查询返回“title”和“description”后访问它们的方法。另一方面,我希望明确地删除查询中返回的所有其他数据,而不是选择少数数据。目的是减少发送回的数据量。我已经看过了,不幸的是,它只提供了3个选项,比我需要检索的字段少了1到2个字段。