是否可以使用API​​修改/更新WordPress geo_latitude和geo_longitude?如果是这样,怎么办?

时间:2018-11-08 21:13:08

标签: wordpress

我正在使用Python通过WordPress API更新WordPress的geo_latitude和geo_longitude。帖子是自定义帖子类型。我有followed the current WordPress documentation,但是REST API documentation对于访问post-field-meta值没有什么特别的要求,尽管它确实包含有关访问“ meta”字段的信息(这有所不同)。

一个search for post-field-meta in the REST API Handbook returns nothing。在其他论坛上,有很多关于通过API使用帖子元数据的文章,其中最引人注目的是this one,但这是从2015年开始的。我找不到最新的官方文章。我已使用该文章中发布的方法,在我的functions.php中,在API中提供了post-field-meta值:

<?php 
add_action( 'rest_api_init', 'create_api_posts_meta_field' );

function create_api_posts_meta_field() { 
 register_rest_field( 'my-custom-post-type', 'post-meta-fields', array(
 'get_callback' => 'get_post_meta_for_api',
 'schema' => null,
 )
 );
}

function get_post_meta_for_api( $object ) {
 //get the id of the post object array
 $post_id = $object['id'];

 //return the post meta
 return get_post_meta( $post_id );
}

?>

这使post-meta-fields可以通过API读取,因此,如果我使用:

headers = { 'Content-Type': 'application/json',
            'Authorization': 'Basic MY_KEY',
            'Username': '',
            'Password':'MY_Password'}

然后

r = requests.get('https://www.example.com/wp-json/wp/v2/my-custom-post-type/MY_POSTID', headers=headers).json()

响应为(例如):

{'_links': {'about':  ...
 ...
 'post-meta-fields': {'_edit_last': ['2'],
                  '_edit_lock': ['1541702960:2'],
                  '_yoast_wpseo_content_score': ['30'],
                  '_yoast_wpseo_primary_category': [''],
                  'geo_address': ['881 7th Ave, New York, NY 10019, USA'],
                  'geo_date': ['2018-11-30 11:00:00'],
                  'geo_latitude': ['40.7651253'],
                  'geo_longitude': ['-73.9799271']},
 ...
 'type': 'my-custom-post-type'}

但是,如果我尝试使用以下方式更新位置:

data = { ...
  'post-meta-fields': {'original_link': 'testlink',
           'html_title': 'test title',
           'geo_address' : ['278 W 50th St., New York, NY 10019'], # arbitrary
           'geo_latitude': ['42.7651253'], # arbitrary
           'geo_longitude': ['-71.9799271']}, # arbitrary

}
       }

GET响应完全相同。

这有可能做到吗,您怎么做?有文档吗?

0 个答案:

没有答案