通过RWordpress和knit2wp从R发布具有自定义帖子类型的帖子

时间:2019-01-03 10:23:44

标签: r wordpress xml-rpc

我目前正在使用Duncan Temple Lang的RWordpress-package和谢益辉的knitr-package来直接从R生成博客帖子。对于正常的常规帖子,我想生成一个帖子带有以前定制的后置类型。通过knit2wp,我似乎只生成常规的新帖子,编辑已发布的帖子或生成新页面。

如果我想手工写一篇文章,我将访问Wordpress后端中的一个页面。对于常规帖子,应为

https://www.your-wordpress.blog/wp-admin/post-new.php

对于定制的帖子

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所提供的信息向我提示了一个称为附件的结构字段。因此,我的想法是包括一个名为附件的列表:

  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-type。有人知道如何在Wordpress中通过R生成帖子的自定义类型吗?

1 个答案:

答案 0 :(得分:0)

也许无法直接给出答案,但是我找到了使用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)

一切正常。