クイックノート

ちょっとした発見・アイデアから知識の発掘を

【RWordPress】固定ページを編集する【editPageの実装】

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です。

clean-copy-of-onenote.hatenablog.com

プライバシーポリシー