jAbreu
Estoy creando una función que crea publicaciones automáticas en wordpress. En este momento, la función crea la publicación de blog de wordpress, pero no puedo ingresar a la categoría.
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;
}
Intenté llegar primero a la clase y pasar solo el nombre de la categoría para evitar errores:
var wordpress = XmlRpcProxyGen.Create<IWordpress>();
Category[] categories= wordpress.getCategories(0, username, password);
El método que crea la categoría de publicación recibe como parámetro. Este método pertenece a la clase Post. La categoría se inserta en la publicación de esta manera:
Categories.Add(category.categoryName);
¿Alguien podría ayudarme? He visto tantas veces este código que no puedo ver dónde me estoy equivocando: (.
Los atributos de Post se obtuvieron en la documentación: http://codex.wordpress.org/XML-RPC_MetaWeblog_API#metaWeblog.newPost. Estoy usando CookComputing.XmlRpc – http://xml-rpc.net/ – versión 2.5.0
Después de publicar la pregunta, me di cuenta de qué tan mal estaba manejando la categoría.
Para colocar la publicación, creamos:
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;
}
E inicializa los atributos en:
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 });
}
Mi error fue no referirme a inicializar la categoría de matriz. La estructura anterior no es correcta y la eliminaré de mi código.
Gracias por su atención.
Otra cosa que podrías usar es el método wp.newPost:
http://codex.wordpress.org/XML-RPC_WordPress_API/Posts#wp.newPost
Esto usa ‘taxonomías’ en lugar de categorías.
Actualmente estoy actualizando el contenedor de WordPress de JoeBlogs para admitir taxonomías (categorías)
https://github.com/alexjamesbrown/joeblogs
¿Ya lo has probado con una matriz de cadenas (
string[] categories
) en lugar de una lista (List<..>
)?– vstm
15 de octubre de 2012 a las 7:15
Después de publicar la pregunta, me di cuenta de qué tan mal estaba manejando la categoría. Voy a publicar cómo podría resolver el problema. Me da vergüenza no haberlo visto antes. Estás bien. Gracias por la respuesta 😀
– jAbreu
15/10/2012 a las 16:14
Hola, @jAbreu: ¿podrías publicar tu solución al problema y marcarla como la respuesta? ¡Gracias!
– doble sostenido
24 de octubre de 2012 a las 13:49
El código de ejemplo no es válido, funciona con la categoría correcta.
– doble sostenido
16 de noviembre de 2013 a las 20:14