Ich erstelle eine Funktion, die automatisierte Posts in WordPress erstellt. Im Moment erstellt die Funktion den WordPress-Blogbeitrag, aber ich kann die Kategorie nicht eingeben.
public class Post
{
public string Title { get; set; }
public string Description { get; set; }
public string PostType { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateCreatedGmt { get; set; }
public List<string> Categories { get; set; }
public List<string> MtKeywords { get; set; }
public string MtExcerpt { get; set; }
public string MtTextMore { get; set; }
public string MtAllowComments { get; set; }
public string MtAllowPings { get; set; }
public string WpSlug { get; set; }
public string WpPassord { get; set; }
public string WpAuthorId { get; set; }
public string WpAuthorDisplayName { get; set; }
public string PostStatus { get; set; }
public string WpPostFormat { get; set; }
public bool Sticky { get; set; }
public List<CustomFields> CustomFields;
public Enclosure Enclosure;
}
Ich habe versucht, zuerst zum Unterricht zu gelangen und nur den Kategorienamen zu übergeben, um Fehler zu vermeiden:
var wordpress = XmlRpcProxyGen.Create<IWordpress>();
Category[] categories= wordpress.getCategories(0, username, password);
Als Parameter erhält die Methode, die die Beitragskategorie aufbaut. Diese Methode gehört zur Klasse Post. Die Kategorie wird folgendermaßen in den Beitrag eingefügt:
Categories.Add(category.categoryName);
Könnte mir jemand helfen? Ich habe diesen Code so oft gesehen, dass ich nicht sehen kann, wo ich falsch liege: (.
Die Attribute von Post wurden in der Dokumentation erhalten: http://codex.wordpress.org/XML-RPC_MetaWeblog_API#metaWeblog.newPost. Ich verwende CookComputing.XmlRpc – http://xml-rpc.net/ – Version 2.5.0
Nachdem ich die Frage gepostet hatte, wurde mir klar, wie falsch die Kategorie gehandhabt wurde.
Um den Beitrag zu platzieren, erstellen wir:
class MetaWeblogClient : XmlRpcClientProtocol
{
[XmlRpcMissingMapping(MappingAction.Ignore)]
public struct Post
{
public DateTime dateCreated;
public string description;
public string title;
public string[] categories;
public string permalink;
public string postid;
public string userid;
public string wp_slug;
}
Und initialisieren Sie die Attribute in:
public void newPost(string userid, string password, string description, string title)
{
this.Url = "http://#########.wordpress.com/xmlrpc.php";
Post post = new Post();
post.categories = new string[1];
post.categories[0] = "Category Name";
post.dateCreated = DateTime.Now;
post.userid = userid;
post.description = description;
post.title = title;
newPost("0", userid, password, post, true);
}
[XmlRpcMethod("metaWeblog.newPost")]
public string newPost(string blogid, string authorId, string password, MetaWeblogClient.Post string description, bool publish)
{
//return string postid
return returnPostId = (string)this.Invoke("newPost", new Object[] { blogid, authorId, password, description, publish });
}
Mein Fehler bezog sich nicht auf die Initialisierung der Array-Kategorie. Die obige Struktur ist nicht korrekt und ich werde sie aus meinem Code entfernen.
Vielen Dank für Ihre Aufmerksamkeit.
Hast du es schon mal mit einem String-Array versucht (
string[] categories
) statt einer Liste (List<..>
)?– vstm
15. Oktober 2012 um 7:15 Uhr
Nachdem ich die Frage gepostet hatte, wurde mir klar, wie falsch die Kategorie gehandhabt wurde. Ich werde posten, wie ich das Problem lösen konnte. Ich schäme mich dafür, es nicht vorher gesehen zu haben. Sie haben Recht. Danke für die Antwort 😀
– jAbreu
15. Oktober 2012 um 16:14 Uhr
Hallo @jAbreu – könntest du deine Lösung des Problems posten und als Antwort markieren? Vielen Dank!
– doppelt scharf
24. Oktober 2012 um 13:49 Uhr
Der Beispielcode ist ungültig, funktioniert mit der richtigen Kategorie.
– doppelt scharf
16. November 2013 um 20:14 Uhr