¿Cómo asociar una categoría a un post wordpress?

3 minutos de lectura

avatar de usuario
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.

  • ¿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

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

¿Ha sido útil esta solución?