【WordPress自動投稿】Fault 500: ‘このタームには名称が必要です。’エラーの解決方法

ブログ

エラー発生時

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
タイトルとURLをコピーしました