I am creating a feature that creates automated posts in wordpress. Right now, the feature creates the wordpress blog post, but I can not enter the category.
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;
}
I tried to get to class first and pass only the category name to avoid errors:
var wordpress = XmlRpcProxyGen.Create<IWordpress>();
Category[] categories= wordpress.getCategories(0, username, password);
The method that builds the post category receives as parameter. This method belongs to the class Post. The category is inserted in the post this way:
Categories.Add(category.categoryName);
Could anyone help me? I've seen so many times this code that I can not see where I'm going wrong: (.
The attributes of Post were obtained in documentation : http://codex.wordpress.org/XML-RPC_MetaWeblog_API#metaWeblog.newPost. I'm using CookComputing.XmlRpc - http://xml-rpc.net/ - version 2.5.0
I realized after I posted the question was how wrong was handling category.
To place the post, we create:
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;
}
And initialize the attributes 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 });
}
My mistake was not referring to initialize the array category. The structure above is not correct and I will remove it from my code.
Thank you for your attention.
To do this go to Posts > All Posts. Next, select the posts you want to add to a category, click on the Bulk Actions tab, select Edit and finally press the Apply. Several new sections will show, allowing you to edit different settings of the selected posts. One of them is the Categories section.
Go to My Sites → Site → Posts. Click on the post you want to assign to a category. Under Document Settings on the right, expand the Category option. Click the checkbox next to the category you want the post to be assigned to and publish your changes.
Another thing you could use is the wp.newPost method:
http://codex.wordpress.org/XML-RPC_WordPress_API/Posts#wp.newPost
This uses 'taxonomies' instead of categories.
I'm currently updating the JoeBlogs Wordpress wrapper to support taxonomies (categories)
https://github.com/alexjamesbrown/joeblogs
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With