Google Places API With ACF

时间:2015-05-07 作者:Porter

我正在创建一个具有场馆自定义帖子类型的网站,其中一个自定义字段(使用高级自定义字段)是业务的营业时间。我本来打算手动查找这些信息并将其插入到我自己的程序中,但这需要做大量的工作,而且它会随着季节的变化而变化,佛蒙特州有很多。尽管如此,我觉得我的最佳解决方案是使用Google Places API。

我现在完全不知道如何使用这个,但我很想学习。我会在空闲时间研究这个问题,但如果有人能帮我一把,我将不胜感激。

有人知道从Google Places API抓取数小时的操作是否会很复杂吗?如果我要在ACF字段中存储“地点ID”(我想这是Google现在使用的),我可以通过模板动态读取小时数吗?我只是想表达一些想法,但如果有人能帮我,我将不胜感激!

1 个回复
SO网友:TheDeadMedic

任何与使用Google Places API有关的内容都将脱离主题,但最好从这里开始the developer docs.

然而,如何在WordPress中和API数据交互肯定是一个主题。我建议使用包装器函数定期缓存结果:

/**
 * Get places data for a post.
 * 
 * @param   int|WP_Post $post   Optional, defaults to current post.
 * @return  mixed
 */
function wpse_187541_google_places_data( $post = null ) {
    if ( ! $post = get_post( $post ) )
        return;
    if ( ! $place_id = get_post_meta( $post->ID, \'place_id\', true ) )
        return; // No place ID configured for this post

    if ( $data = get_post_meta( $post->ID, \'place_data\', true ) ) {
        if ( $data->timeout <= current_time( \'timestamp\' ) )
            $data = null; // Void the cache if it\'s old
    }

    if ( ! $data ) {
        $args = http_build_query(
            array(
                \'key\' => \'\', // API key
                \'placeid\' => $place_id,
            )
        );

        $http = wp_remote_get( "https://maps.googleapis.com/maps/api/place/details/json?$args" );
        if ( $body = wp_remote_retrieve_body( $http ) ) {
            if ( $data =@ json_decode( $body ) )
                $data->timeout = current_time( \'timestamp\' ) + HOUR_IN_SECONDS; // Cache data for 1 hour
        }

        if ( $data ) {
            update_post_meta( $post->ID, \'place_data\', $data );

        } else {
            // Something went wrong.
            // Perhaps check HTTP response and decide cause of problem.
            // Don\'t want to keep hitting the API on every call if the error is permanent (i.e. invalid place id etc.)
        }

    }

    return $data;
}

结束

相关推荐

如何将API构建为插件

我想为wordpress站点创建一个REST API端点,在这里我可以获得不同查询的JSON响应。我已经试过了教程here, 但我似乎无法理解它是如何工作的。我是否需要注册所有查询变量才能使用它们?此外,我认为最好使用add_rewrite_endpoint 但我以前从未使用过这些。因此,我想知道如何在下面的代码中使用该函数。我想发送如下查询<url>/wp-api/version 它将返回wordpress版本号。但现在除了“哈巴狗”之外,它不接受任何查询。我不确定正则表达式到底是怎么回事,

Google Places API With ACF - 小码农CODE - 行之有效找到问题解决它

Google Places API With ACF

时间:2015-05-07 作者:Porter

我正在创建一个具有场馆自定义帖子类型的网站,其中一个自定义字段(使用高级自定义字段)是业务的营业时间。我本来打算手动查找这些信息并将其插入到我自己的程序中,但这需要做大量的工作,而且它会随着季节的变化而变化,佛蒙特州有很多。尽管如此,我觉得我的最佳解决方案是使用Google Places API。

我现在完全不知道如何使用这个,但我很想学习。我会在空闲时间研究这个问题,但如果有人能帮我一把,我将不胜感激。

有人知道从Google Places API抓取数小时的操作是否会很复杂吗?如果我要在ACF字段中存储“地点ID”(我想这是Google现在使用的),我可以通过模板动态读取小时数吗?我只是想表达一些想法,但如果有人能帮我,我将不胜感激!

1 个回复
SO网友:TheDeadMedic

任何与使用Google Places API有关的内容都将脱离主题,但最好从这里开始the developer docs.

然而,如何在WordPress中和API数据交互肯定是一个主题。我建议使用包装器函数定期缓存结果:

/**
 * Get places data for a post.
 * 
 * @param   int|WP_Post $post   Optional, defaults to current post.
 * @return  mixed
 */
function wpse_187541_google_places_data( $post = null ) {
    if ( ! $post = get_post( $post ) )
        return;
    if ( ! $place_id = get_post_meta( $post->ID, \'place_id\', true ) )
        return; // No place ID configured for this post

    if ( $data = get_post_meta( $post->ID, \'place_data\', true ) ) {
        if ( $data->timeout <= current_time( \'timestamp\' ) )
            $data = null; // Void the cache if it\'s old
    }

    if ( ! $data ) {
        $args = http_build_query(
            array(
                \'key\' => \'\', // API key
                \'placeid\' => $place_id,
            )
        );

        $http = wp_remote_get( "https://maps.googleapis.com/maps/api/place/details/json?$args" );
        if ( $body = wp_remote_retrieve_body( $http ) ) {
            if ( $data =@ json_decode( $body ) )
                $data->timeout = current_time( \'timestamp\' ) + HOUR_IN_SECONDS; // Cache data for 1 hour
        }

        if ( $data ) {
            update_post_meta( $post->ID, \'place_data\', $data );

        } else {
            // Something went wrong.
            // Perhaps check HTTP response and decide cause of problem.
            // Don\'t want to keep hitting the API on every call if the error is permanent (i.e. invalid place id etc.)
        }

    }

    return $data;
}

相关推荐

使用帖子标题搜索WP API

我正在使用WP REST API v2尝试搜索具有相同标题的所有帖子,我尝试的是为两个团队创建一种“面对面/以前的会议”页面。目前我可以用一个弹头收回一个帖子,没问题.../wp-json/sportspress/v2/events?slug=team1-vs-team2 当我使用搜索时,它会检索team1和team2的所有事件,以及对team1的所有引用;2来自帖子内容,这不是我想要的。。。.../wp-json/sportspress/v2/events?search=team1+team2