{"id":228747,"date":"2022-10-26T16:40:00","date_gmt":"2022-10-26T13:40:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228747"},"modified":"2022-11-09T04:10:39","modified_gmt":"2022-11-09T01:10:39","slug":"tipos-de-publicaciones-de-wordpress-una-abstraccion-para-las-entidades","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/tipos-de-publicaciones-de-wordpress-una-abstraccion-para-las-entidades\/","title":{"rendered":"Tipos de publicaciones de WordPress: una abstracci\u00f3n para las entidades"},"content":{"rendered":"\n<p>Cuando los programadores hablan de entidades, por lo general se refieren a un concepto o algo que tiene existencia dentro de un sistema. A veces es una clase, a veces es una biblioteca o dependencia, o puede ser algo as\u00ed como los tipos de publicaciones de WordPress.<\/p>\n<p>Si se piensa en WordPress como una <a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">base de aplicaci\u00f3n (en lugar de un marco)<\/a>, es importante pensar en ciertas caracter\u00edsticas de manera que puedan tratarse como entidades. En el ejemplo anterior, un tipo de publicaci\u00f3n es solo eso.<\/p>\n<p>Cuando se introdujeron los tipos de publicaciones personalizadas, <a href=\"https:\/\/make.wordpress.org\/training\/handbook\/theme-school\/custom-post-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nos dio una forma<\/a> de introducir algo m\u00e1s que p\u00e1ginas y publicaciones en la aplicaci\u00f3n. Ahora podemos implementar cualquier concepto, como un <a href=\"https:\/\/wordpress.mediadoma.com\/es\/consulta-de-tipos-de-publicaciones-de-eventos-con-wp-query-y-the-event-calendar\/\" title=\"evento\">evento<\/a>, y tratarlo como una entidad propia dentro del sistema.<\/p>\n<p>Pero cuando todo est\u00e1 dicho y hecho, todo se guarda en la tabla de publicaciones. Y eso est\u00e1 bien porque el desarrollo de software tiene que ver con la abstracci\u00f3n. A medida que implementamos los tipos de publicaciones de WordPress, estamos implementando una abstracci\u00f3n adem\u00e1s de la idea de las publicaciones.<\/p>\n<h2>Tipos de publicaciones de WordPress<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/es\/creacion-programatica-de-usuarios-de-wordpress\/\" title=\"En la \u00faltima publicaci\u00f3n\">En la \u00faltima publicaci\u00f3n<\/a>, analic\u00e9 el proceso de creaci\u00f3n de un usuario que finalmente se asociar\u00e1 con alguna entidad en la aplicaci\u00f3n de WordPress.<\/p>\n<ul>\n<li>Tal vez \u00e9l\/ella es el autor de una publicaci\u00f3n,<\/li>\n<li>Tal vez sea el vendedor de un producto,<\/li>\n<li>Tal vez sea el narrador de una historia,<\/li>\n<li>O cualquier otra cosa que puedas imaginar.<\/li>\n<\/ul>\n<p>Las posibilidades son infinitas. Pero antes de hablar sobre c\u00f3mo crear una asociaci\u00f3n entre las dos entidades, es decir, el usuario y el tipo de publicaci\u00f3n de WordPress, debemos hablar sobre c\u00f3mo implementar una entidad o un tipo de publicaci\u00f3n personalizada mediante programaci\u00f3n.<\/p>\n<p>Hay mucha documentaci\u00f3n sobre esto, y hay muchos tutoriales disponibles sobre esto, as\u00ed que no voy a insistir en el punto. En cambio, voy a tratar de mantener esto lo m\u00e1s b\u00e1sico posible. Recuerde, el objetivo de toda esta serie es finalmente llegar a un punto en el que asociamos entidades a trav\u00e9s de metadatos.<\/p>\n<p>Pero antes de hacer eso, necesitamos crear las entidades. Por lo tanto, tenemos un usuario, as\u00ed que hag\u00e1moslo.<\/p>\n<p>Para nuestro ejemplo, digamos que el usuario que creamos en la publicaci\u00f3n anterior, Meghan, es el autor de un libro. Y dentro de una instalaci\u00f3n de WordPress administrada por otra persona, hay un tipo de publicaci\u00f3n personalizado para libros, cada uno de los cuales tiene algunos atributos:<\/p>\n<ul>\n<li>t\u00edtulo,<\/li>\n<li>descripci\u00f3n,<\/li>\n<li>fecha de publicaci\u00f3n,<\/li>\n<li>ISBN,<\/li>\n<li>n\u00famero de copias iniciales vendidas,<\/li>\n<li>donde se puede comprar,<\/li>\n<li>y as\u00ed.<\/li>\n<\/ul>\n<p>Puede agregar m\u00e1s o menos a su implementaci\u00f3n. De hecho, tal vez est\u00e9 en el negocio de la venta de libros electr\u00f3nicos y la URL del libro para la compra sea uno de los atributos. Cualquiera que sea el caso, usted consigue la idea.<\/p>\n<p>Dicho esto, podemos implementar un tipo de publicaci\u00f3n personalizado simple para &quot;libros&quot; mediante programaci\u00f3n.<\/p>\n<h3>Implementando un tipo de publicaci\u00f3n<\/h3>\n<p>Y eso se parece <a href=\"https:\/\/gist.github.com\/tommcfarlin\/17ab6e5d052da8d471b15cfd70ffa37c\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a esto<\/a> :<\/p>\n<pre><code>&lt;?php\n\nadd_action( 'init', 'acme_create_book_post_type' );\n\/**\n * Creates a new custom post type called 'Book' using the smallest number of arguments\n * to prepare the post type.\n *\/\nfunction acme_create_book_post_type() {\n\n    $args = array(\n        'labels' =&gt; array(\n            'name'          =&gt; 'Books',\n            'singular_name' =&gt; 'Book',\n        ),\n        'public' =&gt; true,\n    );\n    register_post_type( 'acme_book', $args );\n}<\/code><\/pre>\n<p>Si lee la documentaci\u00f3n sobre la <a href=\"https:\/\/codex.wordpress.org\/Post_Types\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">creaci\u00f3n de tipos de publicaciones personalizadas<\/a>, no hay nada anormal en esto. Deber\u00eda verse exactamente como lo esperar\u00edas.<\/p>\n<p>En cuanto a d\u00f3nde creas esto depende de la naturaleza de tu proyecto. Hay muchas personas que argumentar\u00e1n que est\u00e1 en un complemento o que se integra en un tema. Este no es el lugar para debatir eso. Baste decir que, para mis prop\u00f3sitos, asumo que todo es parte del mismo complemento del tutorial anterior.<\/p>\n<p>Adem\u00e1s, no me estoy desviando de las taxonom\u00edas personalizadas, los comentarios o cualquier otro tipo de datos personalizados que se puedan asociar con un tipo de publicaci\u00f3n personalizada.<\/p>\n<p>A partir de ah\u00ed, observamos c\u00f3mo se ve esto en el \u00e1rea de administraci\u00f3n de WordPress y c\u00f3mo se ve esto en la base de datos.<\/p>\n<h3>Mira detr\u00e1s de la cortina<\/h3>\n<p>Primero, as\u00ed es como se ve (o deber\u00eda verse) en el \u00e1rea de administraci\u00f3n de WordPress:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a62adc9ed.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a62adc9ed.png\" alt=\"Tipos de publicaciones de WordPress: una abstracci\u00f3n para las entidades\" ><\/a><\/p>\n<p>Y si observa la base de datos despu\u00e9s de crear una entrada, ver\u00e1 algo como esto:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a6307603a.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a6307603a.png\" alt=\"Tipos de publicaciones de WordPress: una abstracci\u00f3n para las entidades\" ><\/a><\/p>\n<p>Obviamente, he limitado los registros devueltos en el front-end de la base de datos al filtrar los resultados para que la captura de pantalla sea m\u00e1s f\u00e1cil de seguir.<\/p>\n<h2>en los libros<\/h2>\n<p>Y eso es todo, de verdad. Quiero decir, en el nivel m\u00e1s fundamental, as\u00ed es como creas un tipo de publicaci\u00f3n personalizada dentro de WordPress. S\u00e9 que no es nada nuevo, pero si pudiera presentar un caso un poco m\u00e1s s\u00f3lido para una publicaci\u00f3n como esta, incluir\u00eda los siguientes dos puntos.<\/p>\n<h4>1 Se trata de abstracciones<\/h4>\n<p>Si est\u00e1 buscando comenzar a crear aplicaciones web con WordPress, es importante dejar de pensar en t\u00e9rminos tradicionales como publicaciones, p\u00e1ginas, comentarios y categor\u00edas, y comenzar a pensar en ellos como abstracciones m\u00e1s gen\u00e9ricas.<\/p>\n<p>Entidades, como se mencion\u00f3 anteriormente en el art\u00edculo. Una vez que lo haga, tendr\u00e1 un cambio en el modelo mental que impulsar\u00e1 su capacidad para pensar e implementar una soluci\u00f3n.<\/p>\n<h4>2 Se trata de relaciones<\/h4>\n<p>Aunque a menudo pensamos en las cosas en sus partes individuales, como publicaciones y p\u00e1ginas, sabemos que las publicaciones pueden tener comentarios, los comentarios pueden tener respuestas, las p\u00e1ginas pueden tener plantillas, etc.<\/p>\n<p>Hay relaciones entre todas estas cosas individuales que son parte del sistema. Y cuando empiezas a pensar en las relaciones como algo que nos permite hacer m\u00e1s, empiezas a ver cu\u00e1n poderoso puede ser algo. Es todo \u00abel todo es mayor que la suma de sus partes&quot;.<\/p>\n<p>Entonces, una vez que tenga entidades individuales en su lugar y una vez que comience a ver c\u00f3mo se pueden relacionar entre s\u00ed, estar\u00e1 dando un paso adelante en la creaci\u00f3n de algo que resuelva un problema un poco m\u00e1s complejo a partir de partes aparentemente simples.<\/p>\n<p>Y ah\u00ed es donde nos dirigiremos a continuaci\u00f3n.<\/p>\n<h2>\u00bfQu\u00e9 pasa con los metadatos?<\/h2>\n<p>Todo el prop\u00f3sito de esta serie es explicar c\u00f3mo crear una asociaci\u00f3n entre entidades, \u00bfverdad? Espec\u00edficamente, buscamos crear una asociaci\u00f3n entre un usuario y una publicaci\u00f3n o, m\u00e1s espec\u00edficamente, un autor y un libro.<\/p>\n<p>WordPress proporciona la base para hacer esto y aqu\u00ed es donde puede entrar en juego el poder de las tablas y ganchos adicionales. En la pr\u00f3xima publicaci\u00f3n, hablar\u00e9 sobre c\u00f3mo crear esta asociaci\u00f3n, las direcciones a las que pueden ir las asociaciones y c\u00f3mo trabajar con estos datos si, por ejemplo, se elimina un usuario de la aplicaci\u00f3n.<\/p>\n<h2>Publicaciones de la serie<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Asociaci\u00f3n de metadatos de WordPress: c\u00f3mo hacerlo<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/creacion-programatica-de-usuarios-de-wordpress\/\" title=\"Creaci\u00f3n program\u00e1tica de usuarios de WordPress\">Creaci\u00f3n program\u00e1tica de usuarios de WordPress<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-post-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Tipos de publicaciones de WordPress: una abstracci\u00f3n para las entidades<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/asociacion-de-metadatos-de-wordpress-entidades-relacionadas\/\" title=\"Asociaci\u00f3n de Metadatos de WordPress: Entidades Relacionadas\">Asociaci\u00f3n de Metadatos de WordPress: Entidades Relacionadas<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando los programadores hablan de entidades, generalmente se refieren a una parte individual dentro de un sistema, como los tipos de publicaciones de WordPress.<\/p>\n","protected":false},"author":1,"featured_media":221177,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,914,840,861],"tags":[1172],"class_list":["post-228747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-otro","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228747"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/221177"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}