通过 RWordpress 和 knit2wp 从 R 发布带有自定义 post 类型的 posts
Publish posts with custom post type from R via RWordpress and knit2wp
我目前正在使用 Yihui Xie 的 RWordpress-package from Duncan Temple Lang and the knitr-package 直接从 R 生成博客 posts。对于常规的 posts 效果很好,但是我想生成一个post 与以前定制的 post 类型。通过 knit2wp 我似乎只能生成一个常规的新 post,编辑一个已经发布的 post 或生成一个新页面。
如果我想手写 post,我会访问 Wordpress 后端中的一个页面。对于常规 post 那将是
https://www.your-wordpress.blog/wp-admin/post-new.php
对于定制的 post 那将是
https://www.your-wordpress.blog/wp-admin/post-new.php?post_type=custom
所以我的建议是我必须通过 knitr 的 knit2wp 函数发送一些额外的信息和动作参数。
knit2wp函数调用定义如下:
knit2wp(input, title = "A post from knitr", ..., envir = parent.frame(),
shortcode = FALSE, action = c("newPost", "editPost", "newPage"), postid,
encoding = getOption("encoding"), publish = TRUE)
定义通过
发送到 Wordpress 的参数后
WPargs = list(content = list(description = content, title = title,
...), publish = publish)
调用本身已完成:
do.call("library", list(package = "RWordPress", character.only = TRUE))
do.call(action, args = WPargs)
Wordpress 提供的信息向我提示了一个名为 enclosure 的结构字段。因此,我的想法是包含一个名为 enclosure:
的列表
WPargs = list(content = list(description = content, title = title,
...), enclosure = list(type = "custom"), publish = publish)
不幸的是,这会导致一条错误消息:
unused argument (enclosure = list(type = "custom", categories = c("test1", "test2"), wp_post_thumbnail = 12345))
我假设如果我修改来自 XMLRPC 包的一些调用,我可以正确地包含 post 类型,但我不知道从哪里开始。有人知道如何在 Wordpress 中通过 R 生成自定义类型的 posts 吗?
也许不是直接的答案,但我找到了使用 curl 命令的解决方案(参见 Media Api Reference of WordPress)。以这种方式,我只是将命令作为系统调用发送。我将几个字符串连接成一个 curl 命令,例如:
header<- "--header 'Authorization: Basic your_token_here'"
title<- "'title=Some title here'"
excerpt<- "-d 'Some excerpt here'"
url <- "-d 'slug=some-customized-url-structure-here'")
command<-paste("curl ",header," -X POST -d ",title," -d 'status=publish' -d 'categories=12345' -d 'content= here goes the content' -d 'featured_media=xxxyyy' -d 'author=zzzz' ",url," ",excerpt," https://www.your-ur.l/wp-json/wp/v2/customized_structure_update",sep="")
如果我再火起来
system(command)
一切正常。
我目前正在使用 Yihui Xie 的 RWordpress-package from Duncan Temple Lang and the knitr-package 直接从 R 生成博客 posts。对于常规的 posts 效果很好,但是我想生成一个post 与以前定制的 post 类型。通过 knit2wp 我似乎只能生成一个常规的新 post,编辑一个已经发布的 post 或生成一个新页面。
如果我想手写 post,我会访问 Wordpress 后端中的一个页面。对于常规 post 那将是
https://www.your-wordpress.blog/wp-admin/post-new.php
对于定制的 post 那将是
https://www.your-wordpress.blog/wp-admin/post-new.php?post_type=custom
所以我的建议是我必须通过 knitr 的 knit2wp 函数发送一些额外的信息和动作参数。
knit2wp函数调用定义如下:
knit2wp(input, title = "A post from knitr", ..., envir = parent.frame(),
shortcode = FALSE, action = c("newPost", "editPost", "newPage"), postid,
encoding = getOption("encoding"), publish = TRUE)
定义通过
发送到 Wordpress 的参数后 WPargs = list(content = list(description = content, title = title,
...), publish = publish)
调用本身已完成:
do.call("library", list(package = "RWordPress", character.only = TRUE))
do.call(action, args = WPargs)
Wordpress 提供的信息向我提示了一个名为 enclosure 的结构字段。因此,我的想法是包含一个名为 enclosure:
的列表 WPargs = list(content = list(description = content, title = title,
...), enclosure = list(type = "custom"), publish = publish)
不幸的是,这会导致一条错误消息:
unused argument (enclosure = list(type = "custom", categories = c("test1", "test2"), wp_post_thumbnail = 12345))
我假设如果我修改来自 XMLRPC 包的一些调用,我可以正确地包含 post 类型,但我不知道从哪里开始。有人知道如何在 Wordpress 中通过 R 生成自定义类型的 posts 吗?
也许不是直接的答案,但我找到了使用 curl 命令的解决方案(参见 Media Api Reference of WordPress)。以这种方式,我只是将命令作为系统调用发送。我将几个字符串连接成一个 curl 命令,例如:
header<- "--header 'Authorization: Basic your_token_here'"
title<- "'title=Some title here'"
excerpt<- "-d 'Some excerpt here'"
url <- "-d 'slug=some-customized-url-structure-here'")
command<-paste("curl ",header," -X POST -d ",title," -d 'status=publish' -d 'categories=12345' -d 'content= here goes the content' -d 'featured_media=xxxyyy' -d 'author=zzzz' ",url," ",excerpt," https://www.your-ur.l/wp-json/wp/v2/customized_structure_update",sep="")
如果我再火起来
system(command)
一切正常。