R Markdown で作成した HTML ファイルを、
直接 WordPress に投稿することができる「RWordPress」というパッケージですが、
何故か固定ページを編集する機能が容易されていません。。。
仕方がないので、
新しい関数を追加して、
固定ページを編集する機能を自分で追加することにします。
RWordPress のインストール
インストール方法や最低限の使い方については、
下記の記事を参照ください。
clean-copy-of-onenote.hatenablog.com
固定ページの新規作成
固定ページを編集する前に、
編集用のページが必要ですね。
固定ページを新しく作成する機能は、
RWordPress でも容易されています。
例えば、次のようなコマンドを実行すると新しい固定ページが投稿されます。
library(XMLRPC) library(RWordPress) WordpressURL = "https://[domain]/xmlrpc.php" login = c(user = "Password") pageid = newPost(content="test", publish = F,blogid = 0, login = login,.server = WordpressURL)
WordPressURLは、投稿先の WordPress のアドレスを設定しますが、
リモート投稿の受付先である「xmlrpc.php」を指定しています。
loginには、WordPress を編集するためのユーザー名とパスワードを指定します。
newPost
は RWordPress で提供されている固定ページ投稿の関数で、
今回は、「text」という文字が書かれたページを新たに生成しています。
返り値として、「ページID」 が返ってくるので、
pageid
に格納しておきます。
このIDを使って、このページの編集を行います。
固定ページを編集する関数: editPage
残念なことに、固定ページを編集する関数はパッケージに存在しないので、
自作しないといけません。
といっても、newPost
を参考にしつつ、
WordPressのリモートコントロール機能の一覧と照らし合わせれば、
そんなに難しいものではありません。
ということで、さくっと作りましょう。
editPage = function(pageid,content,login, publish=T,blogid=0,.server){ if (is.character(content)) content = list(description = content) ans = xml.rpc(.server, "wp.editPage", as.character(blogid), as.character(pageid),names(login), as.character(login), content, as.logical(publish)) ans }
これで完成です。
ページIDを指定して、上書きする内容をcontent
で与えて、
既存の固定ページを上書き編集します。
テスト実行
それでは、上のeditPage
を使って、
初めにつくった固定ページの内容を書きかえましょう。
editPage(pageid,content="Hello World!", login = login, .server=WordpressURL)
これだけですね。
これで、先ほど新しく作られた固定ページの内容が、「test」から、
「Hello World!」に書き換えられました。
R Markdown でページの内容を作る場合は、
下記記事のmake_content
を使って、
Rmd ファイルから、HTML の生成を行って、
それをcontent
に指定すればOKです。