{"id":430331,"date":"2016-08-30T15:02:00","date_gmt":"2016-08-30T15:02:00","guid":{"rendered":"https:\/\/toolset.com\/es\/?p=430331"},"modified":"2016-08-30T15:18:45","modified_gmt":"2016-08-30T15:18:45","slug":"como-entradas-relacionadas-reemplaza-referencia-de-entrada-y-campos-repetetivos","status":"publish","type":"post","link":"https:\/\/toolset.com\/es\/2016\/08\/como-entradas-relacionadas-reemplaza-referencia-de-entrada-y-campos-repetetivos\/","title":{"rendered":"Como Entradas Relacionadas reemplaza Referencia de Entrada y Campos Repetetivos"},"content":{"rendered":"<p class=\"lead\">La\u00a0pr\u00f3xima mayor funcionalidad para Toolset es &#8220;relaciones de\u00a0muchos a muchos&#8221;. En este art\u00edculo, me gustaria presentar cu\u00e1l es el plan y demostrar qu\u00e9 podr\u00e1s\u00a0conseguir usando esa nueva funcionalidad.<\/p>\n<h2>Qu\u00e9 son las relaciones de uno-a-muchos y muchos-a-muchos<\/h2>\n<p>Uno-a-muchos significa que un objeto &#8220;tiene&#8221; muchos objetos m\u00e1s, o que muchos objetos &#8220;pertenecen&#8221; a s\u00f3lo un objeto. Por ejemplo, un &#8220;proyecto&#8221; puede tener muchas &#8220;revisiones&#8221;. Todas esas &#8220;revisiones&#8221; pertenecen a un &#8220;proyecto&#8221;. Una revisi\u00f3n no puede &#8220;pertenecer&#8221; a dos (o m\u00e1s) proyectos.<\/p>\n<p>Muchos-a-muchos\u00a0<span>significa que objetos de &#8220;un lado&#8221; pueden estar vinculados a muchos objetos del &#8220;otro lado&#8221;. Por ejemplo, vamos a hablar de &#8220;eventos&#8221; y &#8220;ponentes&#8221;. Un evento puede tener muchos ponentes, y cada ponente puede hablar en muchos eventos. En relaciones de muchos-a-muchos, la &#8220;pertenencia&#8221; no tiene importancia, dado que\u00a0cada objeto puede estar vinculado a otros muchos objetos.<\/span><\/p>\n<h2>C\u00f3mo entradas relacionadas reemplaza &#8220;referencia de entrada&#8221; y &#8220;campos repetetivos&#8221;<\/h2>\n<p>La funcionalidad m\u00e1s popular para Types ha sido siempre &#8220;campos de referencia de entradas&#8221; y &#8220;grupos repetitivos de campos&#8221;. Hemos estado un poquito vacilantes a la hora de a\u00f1adir estos campos porque iba a ser muy complicado implementarlos en Views de esa forma. El &#8220;<span>grupo repetetivo de campos&#8221; de ACF, por ejemplo, usa datos serializados, lo que es muy problem\u00e1tico a la hora de filtrarlos. Para poder crear una bosqueda de valores de campos, tendras primero que decodificar los campos y s\u00f3lo luego buscar en PHP. Por motivos muy obvios, para una web con m\u00e1s de unos cientos de entradas, esto va a ser practicamente imposible.\u00a0<\/span><\/p>\n<p>Hemos estudiado un poquito (la verdad que mucho) qu\u00e9 podemos hacer, y hemos llegado a la conclusi\u00f3n de que casi siempre, cuando usas\u00a0<span>campos de referencia de entradas y grupos repetitivos de campos, est\u00e1s creando alg\u00fan\u00a0tipo de relaciones. Por ejemplo, si tienes una Entrada Personalizada (Custom Post Type) llamada &#8220;vuelos&#8221; y creas un campo de\u00a0&#8220;referencia de entrada&#8221; para guardar &#8220;ID del aeropuerto de aterrizaje&#8221;, en realidad lo que creas\u00a0es una\u00a0relaci\u00f3n\u00a0impl\u00edcita.<\/span><\/p>\n<p>Cuando creas un CPT &#8220;casa&#8221; y usas un grupo repetetivo de campos &#8220;fotos&#8221;, est\u00e1s creando directamente un nuevo tipo &#8211; &#8220;fotos&#8221;, creando sus campos y vincul\u00e1ndolo con &#8220;casa&#8221;.<\/p>\n<p>En el momento que declaras que &#8220;una casa tiene fotos&#8221; y que &#8220;fotos tiene campos de XYZ&#8221;, est\u00e1s habilitando las opciones de:<\/p>\n<ul>\n<li>a\u00f1adir fotos a casas<\/li>\n<li>mostrar las fotos de una casa cuando muestras una casa<\/li>\n<li>mostrar la casa cuando muestras una foto<\/li>\n<\/ul>\n<p>Esto es posible\u00a0una vez declaras las relaciones. Por eso es tan problem\u00e1tico crear webs sin PHP usando &#8220;campo de referencia&#8221; sin declarar a qu\u00e9 se refieren, para qu\u00e9 van a servir.<\/p>\n<h2>Toolset 2.3 va hacer que las &#8220;tablas de campos&#8221; sean exactamente como &#8220;grupos repetitivos&#8221;<\/h2>\n<p>As\u00ed que ahora entendemos que las relaciones de entradas te deja conseguir lo mismo que &#8220;referencia de entradas&#8221; y &#8220;grupos repetitivos de campos&#8221;. Pero sab\u00e9is\u00a0muy bien que las relaciones de entradas en Toolset, hasta ahora, son\u00a0bastante menos c\u00f3modas de usar que &#8220;<span>grupos repetetivos&#8221; de ACF. Esto es verdad y estamos por fin arregl\u00e1ndolo para siempre.<\/span><\/p>\n<p>En Toolset 2.3, vas a disfrutar de un flujo de trabajo que te permita:<\/p>\n<ul>\n<li>a\u00f1adir &#8220;grupos de campos repetetivos&#8221;<\/li>\n<li><span>a\u00f1adir campo de &#8220;referencia de entrada&#8221; directamente<\/span><\/li>\n<\/ul>\n<p>En el nuevo interfaz (GUI), no vas a tener que establecer la relaci\u00f3n de la entrada. Types va a &#8220;entender&#8221; que cuando a\u00f1ades un\u00a0campo de\u00a0&#8220;referencia de entrada&#8221; estas &#8220;diciendo&#8221; a Types que esta entrada tiene un &#8220;padre&#8221;. Y cuando creas\u00a0<span>&#8220;grupos de campos repetetivos&#8221;, est\u00e1s realmente estableciendo una entrada &#8220;hija&#8221; con sus campos.<\/span><\/p>\n<p>Todo esto ocurrir\u00e1 en segundo plano, sin ning\u00fan retraso que pueda afectar a tu trabajo ni carga en la base de datos de tu web. Cierto, crearemos un registro en la tabla de &#8216;posts&#8217; de la base de datos, para cada fila que a\u00f1ades en un\u00a0<span>grupo de campos repetetivos. El &#8220;peso&#8221; de esa entrada es insignificante comparado con el ahorro masivo a la hora de crear las consultas relacionadas.<\/span><\/p>\n<h2>C\u00f3mo guardaremos las relaciones de entradas en la base de datos<\/h2>\n<p>Toolset crear\u00e1 una nueva tabla para las relaciones de entradas. Esta tabla va a contener ambos tipos de relaciones: &#8216;uno-a-muchos&#8217; y &#8216;muchos-a-muchos&#8217;.<\/p>\n<p>La ventaja del uso de una tabla personalizada es en el tiempo de la ejecuci\u00f3n. Antes de la version 2.3, obtener la lista entera de los objetos en una relaci\u00f3n de tipo muchos-a-muchos requerir\u00eda N-consultas a la base de datos (una consulta por objeto). En Toolset 2.3, lo hemos cambiado y resultaria en solamente una consulta.<\/p>\n<p>No se trata s\u00f3lamente de consultas a la base de datos. Teneiendo las relaciones de entradas almacenadas en su propia tabla har\u00e1 que el c\u00f3digo PHP relacionado sea much\u00edsimo m\u00e1s sencillo, y el dise\u00f1o de tus entradas tambi\u00e9n. Vas a poder simplemente decir &#8220;tr\u00e1eme todas las canciones por cantante&#8221; (entradas vinculadas con relacion de muchos-a-muchos) y vas a poder crear un sencillo View para mostrarlas.<\/p>\n<h2>Dise\u00f1o detallado, Intefaz y Calendario<\/h2>\n<p>Tenemos ya un equipo de 5 desarrolladores trabajando a jornada completa en la tarea de a\u00f1adir la funcionalidad de muchos-a-muchos a Toolset. Nuestro objetivo es terminar el dise\u00f1o detallado y las maquetas del\u00a0interfaz durante Septiembre. Por lo tanto, alrededor de noviembre deber\u00edamos tener la primera versi\u00f3n funcional. Se trata de un proyecto muy grande y siempre pueden surgir imprevistos, pero en cualquier caso esa es la gran tarea que tenemos ahora en desarrollo en Toolset y esperamos que os guste.<\/p>\n<h2>Consultas?<\/h2>\n<p>\u00bfQu\u00e9 pensais? \u00bfComo vais a usar relaciones de entradas? \u00bfCu\u00e1l es la funcionalidad m\u00e1s importante para ti? Deja tu comentario y te vamos a responder.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La\u00a0pr\u00f3xima mayor funcionalidad para Toolset es &#8220;relaciones de\u00a0muchos a muchos&#8221;. En este art\u00edculo, me gustaria presentar cu\u00e1l es el plan y demostrar qu\u00e9 podr\u00e1s\u00a0conseguir usando esa nueva funcionalidad. Qu\u00e9 son las relaciones de uno-a-muchos y muchos-a-muchos Uno-a-muchos significa que un objeto &#8220;tiene&#8221; muchos objetos m\u00e1s, o que muchos objetos &#8220;pertenecen&#8221; a s\u00f3lo un objeto. Por [&hellip;]<\/p>\n","protected":false},"author":21339,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"ep_exclude_from_search":false,"footnotes":""},"categories":[5696],"tags":[],"class_list":["post-430331","post","type-post","status-publish","format-standard","hentry","category-discussions-es"],"_links":{"self":[{"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/posts\/430331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/users\/21339"}],"replies":[{"embeddable":true,"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/comments?post=430331"}],"version-history":[{"count":2,"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/posts\/430331\/revisions"}],"predecessor-version":[{"id":430336,"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/posts\/430331\/revisions\/430336"}],"wp:attachment":[{"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/media?parent=430331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/categories?post=430331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/toolset.com\/es\/wp-json\/wp\/v2\/tags?post=430331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}