2012-09-25 12 views
5

Sto eseguendo una migrazione da un sito Web a un altro che utilizza Wordpress.Pubblica un post utilizzando XML-RPC WordPress API e Python con categoria

Ho creato nuovi tipi personalizzati per le mie esigenze (con il plug-in Tipi di post personalizzati) e ho creato categorie per ogni tipo personalizzato.

Ho quindi scritto uno script in Python (adattato da this article), che ottiene i messaggi dal db e li spinge in remoto sul nuovo sito Web (di test), utilizzando la nuova API XML-RPC di Wordpress supportata dalla versione 3.4. X.

Al momento posso pubblicare un nuovo post con il tipo di post corretto. Ma se a specificare una categoria, Wordpress sempre mi restituisce questo errore:

xmlrpclib.Fault: <Fault 401: 'Sorry, one of the given taxonomies is not supported by the post type.'> 

sono sicuro che il tipo di post è supportato dalla data tassonomia. Penso di usare una sintassi sbagliata per specificare l'ID della categoria. Ecco il codice:

import datetime, xmlrpclib, MySQLdb 

def post_remotely(post_data): 

    wp_url = "[my wordpress blog url]" 
    wp_username = "[myuser]" 
    wp_password = "[mypasswd]" 
    wp_blogid = "0" 

    status = 'publish' 

    server = xmlrpclib.ServerProxy(wp_url) 

    data = { 'post_title': post_data['title'], 'post_content': post_data['content'], 
      'post_date': post_data['data'], 'post_type': post_data['post_type'], 'terms': post_data['categories'], 
      'post_status': status } 

    post_id = server.wp.newPost(wp_blogid, wp_username, wp_password, data) 

    return post_id 

E sul chiamante, per specificare la categoria:

new_post['categories'] = [ { 'term_id': 3, 'taxonomy': 'news-cat' } ] 

"news-gatto" è il nome della tassonomia associata al tipo personalizzato "notizia". "term-id" è l'id della categoria, che ho scoperto usando phpMyAdmin.

Ho anche provato altri approcci, ma senza risultato. Senza la categoria funziona bene.

Grazie in anticipo per qualsiasi aiuto :)

risposta

9

XML-RPC WordPress API Document dice:

struct terms: Taxonomy names as keys, array of term IDs as values. 
struct terms_names: Taxonomy names as keys, array of term names as values. 

Questo significa termini e terms_names sono directory, il nome della chiave è il nome della tassonomia che si desidera, e il valore è un lista di array.

Se si desidera impostare una categoria, è necessario impostare

‘terms‘:{‘my-category’:[4]} 

o

‘terms_names’:{‘my-category’:["Wordpress"]} 

nella struttura posta, dove "il mio-categoria" è il nome del vostro tassonomia.

Alcune informazioni da: 解决Python发布wordpress内容返回抱歉,文章类型不支持您的分类法.错误

+0

La documentazione su questo tema specifico è orribile. Grazie per la condivisione! Questo è super utile! – jperelli

+0

Ciao, ho cercato un modo per impostare il genitore della tassonomia usando wp.newpost e non riesco a trovarlo (ho già postato una domanda senza risposta), quindi se qualcuno potrebbe aiutare lo apprezzerò profondamente. Grazie – JordanBelf

Problemi correlati