{"id":231218,"date":"2022-12-24T13:19:00","date_gmt":"2022-12-24T10:19:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231218"},"modified":"2022-12-07T10:58:39","modified_gmt":"2022-12-07T07:58:39","slug":"uso-de-filtros-personalizados-con-codigos-cortos","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/uso-de-filtros-personalizados-con-codigos-cortos\/","title":{"rendered":"Uso de filtros personalizados con c\u00f3digos cortos"},"content":{"rendered":"\n<p>Una vez que comprenda la <a href=\"https:\/\/codex.wordpress.org\/Shortcode_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API de Shortcode<\/a> y c\u00f3mo funcionan los <a href=\"https:\/\/tommcfarlin.com\/wordpress-hooks\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">filtros<\/a>, es f\u00e1cil implementarlos en WordPress.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160133-61e705f31918c.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-160133-61e705f31918c.png\" alt=\"Uso de filtros personalizados con c\u00f3digos cortos\" ><\/a><\/p>\n<p>Y cuando puede mezclar los dos, puede hacer mucho m\u00e1s de lo habitual que cuando funcionan de forma independiente.<\/p>\n<p>Espec\u00edficamente, puede filtrar los datos que se encuentran en el resultado del shortcode, y esto puede ser especialmente \u00fatil para otros desarrolladores. Si est\u00e1 familiarizado con la implementaci\u00f3n de filtros personalizados, hacerlo dentro del contexto de un c\u00f3digo corto no es muy diferente.<\/p>\n<p>Pero si nunca antes ha usado la API de shortcode o la funcionalidad, todav\u00eda es f\u00e1cil de hacer.<\/p>\n<h2>Filtros personalizados con c\u00f3digos cortos<\/h2>\n<p>Para esta publicaci\u00f3n, usaremos un ejemplo relativamente artificial. Es decir, el shortcode resultar\u00e1 en algo est\u00e1tico. La raz\u00f3n es que facilita la demostraci\u00f3n en una publicaci\u00f3n y la implementaci\u00f3n en su c\u00f3digo.<\/p>\n<h3>El c\u00f3digo corto<\/h3>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-00-a-simple-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Para implementar un shortcode<\/a>, necesitas dos cosas:<\/p>\n<ol>\n<li>un nombre personalizado para el shortcode,<\/li>\n<li>una funci\u00f3n que se usa para colocar informaci\u00f3n en cualquier lugar donde se use el shortcode.<\/li>\n<\/ol>\n<pre><code>&lt;?php\n\nnamespace Acme;\n\nadd_shortcode('a_simple_example', __NAMESPACE__. 'aSimpleExample');\n\/**\n * Replaces [a_simple_example] short code with the text \"This is the result of an example shortcode.\"\n * whenever the shortcode is placed in a post or page.\n *\/\nfunction aSimpleExample()\n{\n  return 'This is the result of an example shortcode.';\n}<\/code><\/pre>\n<p>Nota en el c\u00f3digo de arriba; He prefijado la funci\u00f3n con. <code>__NAMESPACE__<\/code>Esto se debe a que la funci\u00f3n reside dentro de un espacio de nombres personalizado (que puede ver en la parte superior del archivo).<\/p>\n<p>Sin este prefijo, no se llamar\u00e1 a la funci\u00f3n. Si opta por no usar espacios de nombres, puede renunciar tanto al prefijo como a las barras inclinadas iniciales del nombre de su funci\u00f3n.<\/p>\n<p>Tenga en cuenta que revisaremos esta funci\u00f3n tan pronto como tengamos el filtro en su lugar.<\/p>\n<h3>El filtro<\/h3>\n<p>Agregar un filtro personalizado es similar a agregar un shortcode. Necesitas:<\/p>\n<ol>\n<li>un nombre de filtro personalizado,<\/li>\n<li>una funci\u00f3n que se usa para filtrar la informaci\u00f3n entrante (y los filtros generalmente deben aceptar al menos un par\u00e1metro que es, por supuesto, los datos a filtrar):<\/li>\n<\/ol>\n<p>Para mantener la coherencia con el ejemplo anterior, digamos que solo queremos <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-01-a-simple-filter-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reemplazar algunas palabras en el c\u00f3digo abreviado<\/a> :<\/p>\n<pre><code>&lt;?php\n\nnamespace Acme;\n\nadd_filter('custom_shortcode_example', __NAMESPACE__. 'aSimpleShortcodeFilter');\n\/**\n * Replaces [a simple example] short code with the text \"This is the result of an example shortcode.\"\n * whenever the shortcode is placed in a post or page.\n *\n * @param string $input the input to filter.\n *\n * @return string       the result of the filter running on the input\n *\/\nfunction aSimpleShortcodeFilter(string $input): string\n{\n  return str_ireplace(\n    'an example shortcode.',\n    'a filtered shortcode',\n    $input\n  );\n}<\/code><\/pre>\n<p>Esto reemplazar\u00e1 el contenido de:<\/p>\n<p>Este es el resultado de un shortcode de ejemplo.<\/p>\n<p>A:<\/p>\n<p>Este es el resultado de un shortcode filtrado.<\/p>\n<p>Pero todav\u00eda tenemos que unirlos a los dos.<\/p>\n<h2>Revisando el c\u00f3digo corto<\/h2>\n<p>Para asociar las dos funciones, debemos asegurarnos de que la funci\u00f3n del shortcode aplique el filtro al valor que devuelve.<\/p>\n<p>Afortunadamente, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b264ef7e0af29b42651bf45ba50c64b2#file-02-a-filtered-shortcode-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">implementarlo es simple,<\/a> especialmente porque tenemos todo lo que necesitamos:<\/p>\n<pre><code>&lt;?php\n\nnamespace Acme;\n\nadd_shortcode('a_simple_example', __NAMESPACE__. 'aSimpleExample');\n\/**\n * Replaces [a_simple_example] short code with the text \"This is the result of an example shortcode.\"\n * whenever the shortcode is placed in a post or page.\n *\/\nfunction aSimpleExample()\n{\n  return apply_filters('custom_shortcode_example', 'This is the result of an example shortcode.');\n}\n<\/code><\/pre>\n<p>En un ejemplo m\u00e1s concreto, siempre recomiendo verificar que el resultado del par\u00e1metro no est\u00e9 vac\u00edo, que contenga la cadena que estoy buscando o algo similar.<\/p>\n<p>Es decir, a menudo me gusta abrir con una cl\u00e1usula de guardia. Si la prueba falla, simplemente devuelvo el valor entrante; de lo contrario, filtrar\u00e9 los datos y devolver\u00e9 el resultado de esa operaci\u00f3n.<\/p>\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>Incluso si nunca antes ha usado la API o la funcionalidad, es f\u00e1cil comenzar a implementar filtros personalizados con c\u00f3digos abreviados.<\/p>\n","protected":false},"author":1,"featured_media":235705,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,800,861],"tags":[1172],"class_list":["post-231218","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-php-2","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231218","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=231218"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231218\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/235705"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=231218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=231218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=231218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}