{"id":226037,"date":"2022-08-22T10:46:00","date_gmt":"2022-08-22T07:46:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=226037"},"modified":"2022-11-08T01:31:57","modified_gmt":"2022-11-07T22:31:57","slug":"creando-un-sistema-crud-en-wordpress-complemento-de-tablas-wpdatatables","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/creando-un-sistema-crud-en-wordpress-complemento-de-tablas-wpdatatables\/","title":{"rendered":"Creando un sistema CRUD en WordPress &#8211; Complemento de tablas wpDataTables"},"content":{"rendered":"\n<p>Este art\u00edculo sobre la creaci\u00f3n de un sistema CRUD en WordPress se public\u00f3 en 2014. Sin embargo, notamos que este tema se volvi\u00f3 a\u00fan m\u00e1s actual, por lo que decidimos darle una nueva mirada.<\/p>\n<p>\u00bfQu\u00e9 es un sistema CRUD, c\u00f3mo integrar un sistema CRUD para MySQL en su sitio de WordPress, cu\u00e1les son las ventajas y desventajas de usar diferentes enfoques?<\/p>\n<h2>\u00bfQu\u00e9 es un sistema CRUD?<\/h2>\n<p>La abreviatura <strong>CRUD<\/strong> proviene de <strong>Crear<\/strong>, <strong>Leer<\/strong>, <strong>Actualizar<\/strong>, <strong>Eliminar<\/strong>. Lo que, en otras palabras, significa un sistema de gesti\u00f3n de datos. En la web, lo m\u00e1s probable es que signifique una pieza de software que administra las entradas en su base de datos. Por lo general, se refiere a MySQL, PostgreSQL, MS SQL u otros motores de base de datos.<\/p>\n<p>Un excelente y, quiz\u00e1s, el ejemplo m\u00e1s popular de un sistema CRUD es <a href=\"https:\/\/www.phpmyadmin.net\/home_page\/index.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">phpMyAdmin<\/a>. PHPMyAdmin es una herramienta que utilizan casi todos los desarrolladores web para administrar datos MySQL en l\u00ednea. Se difundi\u00f3 tanto que actualmente puede llamarse una herramienta est\u00e1ndar para administrar bases de datos MySQL. Hoy en d\u00eda viene preinstalado en casi cualquier herramienta CPanel de los proveedores de hosting.<\/p>\n<p>Hay miles de casos de uso est\u00e1ndar para los sistemas CRUD. Por ejemplo, casi cualquier cat\u00e1logo, registro de entrada, informaci\u00f3n estad\u00edstica. B\u00e1sicamente, cualquier cosa relacionada con el almacenamiento de informaci\u00f3n requerir\u00eda agregar, modificar y eliminar bits de informaci\u00f3n. Ah\u00ed es cuando entran en juego los sistemas CRUD.<\/p>\n<h2>\u00bfPor qu\u00e9 necesitar\u00edas un sistema CRUD en WordPress?<\/h2>\n<p>WordPress en s\u00ed mismo es un potente CMS (Sistema de gesti\u00f3n de contenido), que tambi\u00e9n es un caso especial del sistema CRUD. Como sabe, los usuarios del sitio de WordPress pueden agregar publicaciones y p\u00e1ginas, editarlas o eliminarlas. Pero a veces se encuentra con una situaci\u00f3n en la que necesita administrar algunos datos de la base de datos directamente desde el front-end de WordPress, que generalmente no se publica ni est\u00e1 relacionado con la p\u00e1gina y no encaja bien en las taxonom\u00edas de WordPress. Entre otras puede ser una de estas situaciones en las que necesitar\u00edas un sistema CRUD independiente en WordPress:<\/p>\n<ul>\n<li>Le gustar\u00eda tener un rastreador de errores, un registro de entrada o alguna otra herramienta de entrada de datos en su sitio de WordPress;<\/li>\n<li>O, por ejemplo, desea permitir que algunos de los usuarios editen algunos datos relacionados con el negocio desde el front-end de su sitio sin proporcionarles acceso al panel de administraci\u00f3n del sitio de WordPress, o tal vez incluso sin revelar el hecho de que el sitio se ejecuta en WordPress;<\/li>\n<li>Otro ejemplo es un requisito para permitir que algunos usuarios editen una tabla de base de datos. Por ejemplo, modificar un pedido realizado, editar algunos datos personales, etc.<\/li>\n<\/ul>\n<p>Y solicitudes similares.<\/p>\n<h2>\u00bfC\u00f3mo integrar un sistema CRUD en un sitio de WordPress?<\/h2>\n<h3>La soluci\u00f3n m\u00e1s f\u00e1cil: intente encontrar un complemento adecuado<\/h3>\n<p><strong>Primero, aseg\u00farese de que realmente necesita uno.<\/strong> Muchas de las tareas no son \u00fanicas y probablemente pueda encontrar un complemento que se adapte a sus necesidades. Por ejemplo, si necesita un rastreador de errores, como se mencion\u00f3 anteriormente, puede verificar y descargar <a href=\"https:\/\/wordpress.org\/plugins\/really-simple-issue-tracker\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">este<\/a> o <a href=\"https:\/\/wordpress.org\/plugins\/bugerator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">este<\/a>.<\/p>\n<p>Y si necesita algo m\u00e1s gen\u00e9rico, como editar diferentes tablas MySQL desde el front-end de WordPress, pruebe nuestro complemento <a href=\"https:\/\/wpdatatables.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wpDataTables<\/a>, que es b\u00e1sicamente un sistema CRUD en WordPress. Puedes ver la lista de caracter\u00edsticas y ejemplos de c\u00f3mo funciona <a href=\"https:\/\/wpdatatables.com\/documentation\/general\/features-overview\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aqu\u00ed<\/a>. O incluso pruebe una versi\u00f3n Lite gratuita en el <a href=\"https:\/\/wordpress.org\/plugins\/wpdatatables\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">repositorio de complementos de WordPress<\/a>.<\/p>\n<p>Vale la pena se\u00f1alar que wpDataTables no impone ninguna limitaci\u00f3n en la estructura de datos, la cantidad de columnas o filas, admite muchos <a href=\"https:\/\/wpdatatables.com\/documentation\/column-features\/currency-percentage-and-other-columns\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tipos de datos<\/a> y <a href=\"https:\/\/wpdatatables.com\/documentation\/front-end-editing\/editor-input-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">diferentes tipos de entrada del editor<\/a>. Por ejemplo, algunos tipos espec\u00edficos como archivos adjuntos o <a href=\"https:\/\/wpdatatables.com\/documentation\/column-features\/datetime-columns\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DateTime<\/a>. Adem\u00e1s, permite editar datos a trav\u00e9s de un <a href=\"https:\/\/wpdatatables.com\/documentation\/front-end-editing\/creating-editable-tables\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">editor de formularios emergentes<\/a>, con un <a href=\"https:\/\/wpdatatables.com\/documentation\/front-end-editing\/inline-editing\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">editor en l\u00ednea<\/a> o incluso con un editor de <a href=\"https:\/\/wpdatatables.com\/documentation\/front-end-editing\/excel-like-editor\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hojas de c\u00e1lculo tipo Excel<\/a>.<\/p>\n<p>Si a\u00fan siente que necesita crear un sistema CRUD personalizado en WordPress, debe prepararse para una codificaci\u00f3n seria para hacerlo.<\/p>\n<h3>Inicie un nuevo complemento de WordPress<\/h3>\n<p>Si crees que ning\u00fan plugin se ajusta a tus necesidades, \u00a1crea el tuyo propio! Puede que no sea tan aterrador como parece a primera vista. Comience leyendo <a href=\"http:\/\/code.tutsplus.com\/tutorials\/create-a-custom-wordpress-plugin-from-scratch--net-2668\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">este buen tutorial<\/a> sobre c\u00f3mo crear un complemento de WordPress desde cero. Y tambi\u00e9n, por supuesto, <a href=\"https:\/\/codex.wordpress.org\/Writing_a_Plugin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">este<\/a> en WordPress Codex.<\/p>\n<p>El primer paso inicial cuando crea cualquier complemento, incluido un sistema CRUD en un complemento de WordPress, es estructurar los archivos correctamente.<br \/>\nEl enfoque habitual es colocar el archivo de punto CRUD de entrada principal en el directorio ra\u00edz del complemento y preparar varias subcarpetas:<\/p>\n<ul>\n<li><strong>Activos<\/strong>: todos los javascript, hojas de estilo, fuentes, im\u00e1genes y otros activos est\u00e1ticos que ser\u00e1n necesarios para su sistema CRUD;<\/li>\n<li><strong>Fuente<\/strong>: carpeta para las clases PHP &quot;b\u00e1sicas&quot; que realizar\u00e1n toda la funcionalidad CRUD en el back-end;<\/li>\n<li><strong>Lib<\/strong>: carpeta para cualquier componente de terceros que desee utilizar en su sistema CRUD;<\/li>\n<li><strong>Plantillas<\/strong>: carpeta para plantillas HTML que ser\u00e1n la interfaz de usuario para su sistema CRUD.<\/li>\n<\/ul>\n<p>Puede haber m\u00e1s (controladores, manejadores de c\u00f3digo abreviado y otros), pero eso es lo m\u00ednimo para empezar.<\/p>\n<h3>Crear back-end del editor (clases PHP)<\/h3>\n<p>En primer lugar, necesitar\u00eda la parte de back-end: un script PHP que realmente har\u00eda los trabajos CRUD. Para esto, necesitar\u00eda conectarlo con WordPress DB (objeto global $wpdb). Puede leer un buen tutorial <a href=\"http:\/\/wp.smashingmagazine.com\/2011\/09\/21\/interacting-with-the-wordpress-database\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aqu\u00ed<\/a> sobre el uso de la base de datos de WordPress y el objeto $wpdb en sus complementos.<\/p>\n<p>Si usa una base de datos externa, necesitar\u00e1, por ejemplo, usar una <a href=\"https:\/\/php.net\/pdo\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">conexi\u00f3n PDO<\/a> separada, o simplemente funciones incorporadas de PHP <a href=\"http:\/\/www.php.net\/manual\/en\/book.mysqli.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">MySQLi<\/a> (si su motor de base de datos es MySQL).<\/p>\n<p>Su tarea en este paso es preparar un conjunto de clases y m\u00e9todos que aceptar\u00e1n datos del front-end en alguna forma esperada, validarlos y <a href=\"https:\/\/codex.wordpress.org\/Validating_Sanitizing_and_Escaping_User_Data\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">desinfectarlos<\/a> (desinfectar todas las entradas es una medida de seguridad muy importante para todos los sistemas CRUD) y realizar las acciones <strong>INSERTAR<\/strong>, <strong>ACTUALIZAR<\/strong> y <strong>ELIMINAR en su base de datos.<\/strong><\/p>\n<p>Como se describi\u00f3 en el paso anterior, estos archivos &quot;b\u00e1sicos&quot; pertenecer\u00edan a la carpeta &quot;fuente&quot; de su nuevo complemento CRUD de WordPress.<\/p>\n<h3>Crear una interfaz de usuario (HTML, JS, PHP)<\/h3>\n<p>Cuando las clases y los m\u00e9todos de administraci\u00f3n de la base de datos est\u00e9n preparados, su complemento necesitar\u00e1 una interfaz frontal para que el usuario use su nuevo sistema CRUD en WordPress. La mejor soluci\u00f3n ser\u00eda preparar un conjunto de plantillas en sus nuevos archivos de complemento y enviarlo donde lo necesite con un c\u00f3digo abreviado.<\/p>\n<p>Tiene sentido mantener siempre las plantillas HTML separadas del c\u00f3digo (enfoque MVC) y preparar archivos de plantilla l\u00f3gicamente separados, por ejemplo: &quot;edit.tpl.php&quot;, &quot;delete.tpl.php&quot;, &quot;list.tpl.php&quot;. &quot;, etc. \u2013 una plantilla para cada p\u00e1gina o acci\u00f3n CRUD.<\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Shortcode_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Aqu\u00ed<\/a> puede leer un excelente art\u00edculo del c\u00f3dice sobre la API de c\u00f3digo abreviado de WordPress.<\/p>\n<h3>Conecte el front-end con el back-end con llamadas AJAX (JS)<\/h3>\n<p>Por supuesto, puede hacerlo al &quot;estilo de la vieja escuela&quot;, con env\u00edos de formularios simples y recarga de p\u00e1gina. Sin embargo, hoy en d\u00eda ya no es un enfoque com\u00fan. En cambio, usar AJAX es un enfoque est\u00e1ndar, ya sea a trav\u00e9s de jQuery u otras bibliotecas como Angular. Por lo tanto, nuestra recomendaci\u00f3n es tomarse un tiempo y considerar el uso de AJAX en sus complementos de WordPress. <a href=\"https:\/\/codex.wordpress.org\/AJAX_in_Plugins\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Aqu\u00ed<\/a> hay un excelente art\u00edculo de Codex sobre c\u00f3mo usar AJAX en sus complementos, tanto en el lado administrativo como en el front-end.<\/p>\n<p>Puede colocar el c\u00f3digo JS en la carpeta de &quot;activos&quot; que prepar\u00f3 en el primer paso.<\/p>\n<h3>Probar, refinar y depurar<\/h3>\n<p>Cuando termine la parte de implementaci\u00f3n, t\u00f3mese un tiempo y pruebe su nuevo sistema CRUD en WordPress. No puede detectar todos los errores desde el principio, pero repetir las acciones de rutina CRUD varias veces con diferentes ejemplos (casos &quot;extremos&quot; preferibles, por ejemplo, cantidades muy grandes de datos, hacer clic varias veces en el mismo bot\u00f3n, etc.) siempre lo ayudar\u00e1. para detectar la mayor\u00eda de los errores, y estos siempre ocurren cuando implementa algo nuevo.<\/p>\n<h2>CRUD vs REST: \u00bfCu\u00e1l es la diferencia?<\/h2>\n<p>REST es un estilo arquitect\u00f3nico de creaci\u00f3n de aplicaciones en red basado en un protocolo de comunicaci\u00f3n cliente-servidor, sin estado y almacenable en cach\u00e9, es decir, el protocolo HTTP. CRUD es un acr\u00f3nimo de CREAR, LEER, ACTUALIZAR y ELIMINAR, las funciones b\u00e1sicas de almacenamiento persistente en programaci\u00f3n.<\/p>\n<p>Las operaciones CRUD, es decir, CREAR, LEER, ACTUALIZAR, ELIMINAR, son similares a los comandos b\u00e1sicos REST, es decir, GET, PUT, POST, DELETE, lo que genera confusi\u00f3n entre los dos. \u00bfQu\u00e9 es CRUD? \u00bfQu\u00e9 es REST? En CRUD vs REST, \u00bfcu\u00e1l es la definici\u00f3n de CRUD? \u00bfEs REST una mera copia al carb\u00f3n de CRUD?<\/p>\n<p>\u00a1Todas estas son preguntas muy pertinentes que este art\u00edculo pretende responder en detalle!<\/p>\n<h3><strong>\u00bfC\u00f3mo funciona REST?<\/strong><\/h3>\n<p>No puede comprender t\u00e9rminos como API REST, servicios REST, matriz CRUD o base de datos CRUD o programaci\u00f3n REST si no comprende la diferencia entre los dos procesos en cuanto a la forma en que funcionan. La confusi\u00f3n desaparecer\u00e1 una vez que sepas esta diferencia.<\/p>\n<p>Puede trabajar con REST en cualquier recurso, ya sea un archivo multimedia, un documento, un sitio web, etc. No hay restricciones en cuanto a lo que puede trabajar con REST; puede usar HTML solo como protocolo de comunicaci\u00f3n para se\u00f1alar los recursos. REST significa Transferencia de Estado Representacional.<\/p>\n<p>REST indica que all\u00ed cada URL distintiva representa alg\u00fan objeto, al que puede acceder a trav\u00e9s de HTTP GET, as\u00ed como modificarlo y eliminarlo a trav\u00e9s de HTTP POST, PUT o DELETE.<\/p>\n<h3><strong>\u00bfC\u00f3mo funciona CRUD?<\/strong><\/h3>\n<p>Solo puede aplicar CRUD en los registros de la base de datos y no puede crear API CRUD como crea API REST. La aplicaci\u00f3n CRUD est\u00e1 restringida a bases de datos, por lo que CRUD, a diferencia de REST, no es un estilo de arquitectura, sino un ciclo. Las aplicaciones y los sitios web contienen diferentes ciclos CRUD.<\/p>\n<p>Por ejemplo, un visitante en un sitio web de comercio electr\u00f3nico puede CREAR una cuenta, ACTUALIZAR la cuenta, LEER la informaci\u00f3n y ELIMINAR la cuenta. Ese es un ciclo CRUD completo que incluye cada operaci\u00f3n CRUD.<\/p>\n<p>Por ejemplo, en el mismo sitio web de comercio electr\u00f3nico, un visitante puede CREAR un art\u00edculo en el carrito electr\u00f3nico y luego completar el ciclo CRUD completo al LEER, ACTUALIZAR e incluso ELIMINAR el art\u00edculo.<\/p>\n<h3><strong>La Fundaci\u00f3n y los Principios de REST<\/strong><\/h3>\n<p>Los comandos b\u00e1sicos de la transferencia de estado representacional, el acr\u00f3nimo REST, giran en torno a un objeto o recurso, que puede describirse como cualquier cosa que pueda revelar mediante el protocolo HTTP. Ejemplos de recursos REST: imagen, sitio web, documento, servicio. El cielo es el limite.<\/p>\n<p>REST es una interfaz de programaci\u00f3n de aplicaciones, o API, o una arquitectura destinada a multimedia distribuida. Una API es un servicio web que sigue los principios de la arquitectura REST. Por lo tanto, REST llama a cada API a trav\u00e9s de uno de los m\u00e9todos de solicitud HTTP, GET, PUT, POST y DELETE.<\/p>\n<h3><strong>Los seis principios rectores de la arquitectura RESTful<\/strong><\/h3>\n<ol>\n<li>\n<h3><strong>Mandato Cliente-Servidor<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>El mandato cliente-servidor enfatiza el hecho de que REST representa un m\u00e9todo distribuido que se basa en la naturaleza de la separaci\u00f3n cliente-servidor. Un servicio REST implica varias capacidades y atiende solicitudes. El cliente realiza las solicitudes y el servidor las acepta o deniega.<\/p>\n<ol start=\"2\">\n<li>\n<h3><strong>apatridia<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-205612-61e8cbbce0972.jpg\" 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-205612-61e8cbbce0972.jpg\" alt=\"Creando un sistema CRUD en WordPress - Complemento de tablas wpDataTables\" ><\/a><\/p>\n<p>La apatridia restringe el tipo de solicitudes que se pueden enviar entre el consumidor y el servidor. En efecto, es la solicitud la que inicia la comunicaci\u00f3n entre el cliente y el servicio, donde la solicitud contiene toda la informaci\u00f3n necesaria para que el servidor responda.<\/p>\n<ol start=\"3\">\n<li>\n<h3><strong>almacenamiento en cach\u00e9<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>El prop\u00f3sito de almacenar en cach\u00e9 una solicitud nunca es tener que enviar la misma solicitud dos veces porque el almacenamiento en cach\u00e9 le indica al servidor que etiquete las respuestas como almacenables en cach\u00e9 o no. Como resultado, el almacenamiento en cach\u00e9 reduce las limitaciones o restricciones generadas por la apatridia.<\/p>\n<ol start=\"4\">\n<li>\n<h3><strong>Contrato Uniforme<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>El Contrato Uniforme excluye el uso de varias interfaces independientes dentro de una Interfaz de Programaci\u00f3n de Aplicaciones o API. REST se adhiere a los principios de un Contrato Uniforme. Por lo tanto, una interfaz REST se comparte a trav\u00e9s de conexiones hipermedia.<\/p>\n<ol start=\"5\">\n<li>\n<h3><strong>Sistema en capas<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>Un sistema en capas emplea varias capas independientes para desarrollar y ampliar la interfaz. Como las capas no pueden verse entre s\u00ed, se pueden insertar nuevas solicitudes y middleware que no tendr\u00e1n un impacto en los comandos iniciales y el funcionamiento del cliente-servidor.<\/p>\n<ol start=\"6\">\n<li>\n<h3><strong>Opcional: c\u00f3digo bajo demanda<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>Si bien Cliente-Servidor, Almacenamiento en cach\u00e9, Apatridia, Contrato uniforme y Sistema en capas son imprescindibles para las aplicaciones RESTful, Code-On-Demand no es obligatorio. Sin embargo, Code-on-Demand permite que la l\u00f3gica dentro de los clientes permanezca independiente y, por lo tanto, se actualice por separado de la l\u00f3gica del servidor.<\/p>\n<h3><strong>Pensamientos finales sobre CRUD vs REST<\/strong><\/h3>\n<p>CRUD implica las operaciones esenciales realizadas en el almacenamiento de datos est\u00e1ticos o bases de datos, como el manejo de registros u objetos pasivos. CRUD esencialmente manipula datos b\u00e1sicos.<\/p>\n<p>REST se basa en la representaci\u00f3n de recursos a trav\u00e9s de URL \u00fanicas, donde los recursos son abstracciones de objetos, donde el comentario de un usuario puede ser un recurso, por ejemplo.<\/p>\n<p>Como tal, REST implica m\u00e1s que un registro en una tabla de comentarios. REST se trata de la relaci\u00f3n del registro con el recurso del usuario y la publicaci\u00f3n\/comentario al que est\u00e1 adjunto. REST es un estilo de API de muy alto nivel que interact\u00faa con un sistema complejo.<\/p>\n<hr \/>\n<p>Por supuesto, este art\u00edculo no era un tutorial completo, ya que se necesitar\u00edan veinte p\u00e1ginas para escribir uno. Pero h\u00e1ganos saber si tiene alguna pregunta o le gustar\u00eda ver un ejemplo espec\u00edfico paso a paso, y crearemos uno para usted.<\/p>\n<p>Esperamos que haya sido \u00fatil de alguna manera.<\/p>\n<p>\u00a1Gracias por leer!<\/p>\n<p>Fuente de la imagen: <a href=\"http:\/\/www.tyseo.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/www.tyseo.net<\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wpdatatables.com\" class=\"external external_icon\">wpdatatables.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Crear un sistema CRUD en WordPress puede ser complicado. En este art\u00edculo veremos la definici\u00f3n de un sistema CRUD y las diferentes formas de hacerlo.<\/p>\n","protected":false},"author":1,"featured_media":205613,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[810,840,861],"tags":[1172],"class_list":["post-226037","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-complementos","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/226037","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=226037"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/226037\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/205613"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=226037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=226037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=226037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}