エラー発生時
python-wordpress-xmlrpcを使っているときに、
Fault: <Fault 500: 'このタームには名称が必要です。'>
というエラーが表示されたので、その解決方法をメモしておきます。
エラー発生原因
WordPressの投稿要素に正しくない内容が含まれていたのが原因でした。具体的には、以下のようなコードで、tagに空の文字列(tags == ['']
)が入ったときにうまくいっていませんでした。
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import NewPost
# Set URL, ID, Password
wordpress_id = os.environ['wordpress_id']
wordpress_password = os.environ['wordpress_pw']
base_url = "https://.com/"
wp = Client(base_url+'xmlrpc.php', wordpress_id, wordpress_password)
def post_to_wp(wp, title, body, categories=[], tags=[], status = "draft"):
# Post
post = WordPressPost()
post.title = title
post.content = body
post.post_status = status
post.terms_names = {
"category": categories,
"post_tag": tags,
}
post.slug = link_name
post_id =wp.call(NewPost(post))
return post_id
これを以下のように修正するとうまくいきました。
def post_to_wp(wp, title, body, categories=[], tags=[], status = "draft",eye_catch_img_id=None, link_name=None,meta_data=None, date=None, comment_status=False):
# Post
post = WordPressPost()
post.title = title
post.content = body
post.post_status = status
if tags == ['']:
post.terms_names = {
"category": categories,
}
else:
post.terms_names = {
"category": categories,
"post_tag": tags,
}
post.slug = link_name
post_id =wp.call(NewPost(post))
return post_id