使用python-wordpress-xmlrpc发布时无法设置页面模板

时间:2015-09-16 00:52:44

标签: python wordpress

我创建了一个脚本,当我运行它时会发布到我的网站上(请参阅下面的代码)并且一切正常,但我似乎无法为我创建的页面设置模板。

from wordpress_xmlrpc import Client
from wordpress_xmlrpc.methods import posts, pages
from wordpress_xmlrpc import WordPressPage

client = Client(...)

page = WordPressPage()
page.template = 'template_name.php'
page.parent_id = '206'

page.title = 'Test'
page.slug = 'rrr'
page.content = 'Some text goes here'
page.post_status = 'publish'
page.id = client.call(posts.NewPost(page))

我发现此问题发布在存储库(https://github.com/maxcutler/python-wordpress-xmlrpc/issues/44),我尝试使用替代方法:

page.wp_page_template = 'template_name.php'

我也尝试了模板的名称和其他变体。当我使用GetPageTemplates代码时,我也发现了我的模板:

templates = client.call(pages.GetPageTemplates())

我的所有模板都显示在这里。

使用此设置有任何成功吗?

1 个答案:

答案 0 :(得分:1)

似乎是wordpress_xmlrpc的错误。

wordpress_xmlrpc转换字段'模板' - > ' wp_page_tempalte'但它错了。 应转换为' page_template' (没有wp_前缀)。

"类-WP-XMLRPC-server.php"然后从' page_template'转换后期数据字段。到' wp_page_template'。

所以wordpress_xmlrpc应该发送page_template而不是wp_page_template。 wordpress_xmlrpc会在发布前将template转换为wp_page_template,所以:

  1. 使用'模板'

    page.template = 'template_name.php'

  2. 补丁wordpress.py如:

  3. *** wordpress.py
    --- wordpress.py.orig
    ***************
    *** 126,132 ****
         class WordPressPage(WordPressPost):
          definition = dict(WordPressPost.definition, **{
    !         'template': 'page_template',
              'post_type': FieldMap('post_type', default='page'),
          })   
    --- 126,132 ----
         class WordPressPage(WordPressPost):
          definition = dict(WordPressPost.definition, **{
    !         'template': 'wp_page_template',
              'post_type': FieldMap('post_type', default='page'),
          })
    

    有效。