{"id":101,"date":"2004-05-09T23:57:26","date_gmt":"2004-05-09T21:57:26","guid":{"rendered":"http:\/\/www.marblestation.com\/blog\/?p=101"},"modified":"2012-04-26T19:12:47","modified_gmt":"2012-04-26T17:12:47","slug":"bug-wordpress-solucionado","status":"publish","type":"post","link":"https:\/\/www.marblestation.com\/?p=101","title":{"rendered":"Bug wordpress solucionado"},"content":{"rendered":"<p>Como comentaba en mi \u00faltimo post, <a href=\"http:\/\/wordpress.org\">wordpress<\/a> (el sistema de blog que utilizo) tiene un peque\u00f1o fallo, por defecto a\u00f1ade etiquetas de nueva linea &#8220;br&#8221; a todos los finales de linea del texto, de forma que cuando escribes un post no hace falta indicarlo manualmente. El inconveniente es que realiza tambi\u00e9n esa modificaci\u00f3n el texto que se encuentra entre tags &#8220;pre&#8221;, cosa que es incorrecta ya que visualmente genera m\u00e1s lineas en blanco de las que realmente hay. Adem\u00e1s de los &#8220;br&#8221; tambi\u00e9n a\u00f1ade &#8220;p&#8221; para indicar cada parrafo, pero de nuevo dentro de un &#8220;pre&#8221; esto no debe hacerse.<\/p>\n<p>Despu\u00e9s de haber tenido \u00e9xito arreglando el bug de squirrelmail me he lanzado a mirar el c\u00f3digo de wordpress y finalmente he solucionado el error. Ha sido algo m\u00e1s complicado de todas formas. La soluci\u00f3n est\u00e1 en substituir la funci\u00f3n wpauto(&#8230;) del fichero &#8220;wp-includes\/functions.php&#8221; por:<br \/>\n<!--more--><\/p>\n<pre>\r\nfunction wpautop($pee, $br = 1) {\r\n        $pee = $pee . \"\\n\"; \/\/ just to make things a little easier, pad the end\r\n        $pee = preg_replace('|&#60;br \/>\\s*&#60;br \/>|', \"\\n\\n\", $pee);\r\n        $pee = preg_replace('!(&#60;(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)!', \"\\n$1\", $pee); \/\/ Space things out a little\r\n        $pee = preg_replace('!(&#60;\/(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])>)!', \"$1\\n\", $pee); \/\/ Space things out a little\r\n        $pee = preg_replace(\"\/(\\r\\n|\\r)\/\", \"\\n\", $pee); \/\/ cross-platform newlines\r\n        $pee = preg_replace(\"\/\\n\\n+\/\", \"\\n\\n\", $pee); \/\/ take care of duplicates\r\n        \/\/$pee = preg_replace('\/\\n?(.+?)(?:\\n\\s*\\n|\\z)\/s', \"\\t&#60;p>$1&#60;\/p>\\n\", $pee); \/\/ make paragraphs, including one at the end\r\n        $pee = preg_replace('|&#60;p>\\s*?&#60;\/p>|', '', $pee); \/\/ under certain strange conditions it could create a P of entirely whitespace\r\n    $pee = preg_replace('!&#60;p>\\s*(&#60;\/?(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)\\s*&#60;\/p>!', \"$1\", $pee); \/\/ don't pee all over a tag\r\n        $pee = preg_replace(\"|&#60;p>(&#60;li.+?)&#60;\/p>|\", \"$1\", $pee); \/\/ problem with nested lists\r\n        $pee = preg_replace('|&#60;p>&#60;blockquote([^>]*)>|i', \"&#60;blockquote$1>&#60;p>\", $pee);\r\n        $pee = str_replace('&#60;\/blockquote>&#60;\/p>', '&#60;\/p>&#60;\/blockquote>', $pee);\r\n        $pee = preg_replace('!&#60;p>\\s*(&#60;\/?(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)!', \"$1\", $pee);\r\n        $pee = preg_replace('!(&#60;\/?(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)\\s*&#60;\/p>!', \"$1\", $pee);\r\n        \/\/if ($br) $pee = preg_replace('|(?&#60;!&#60;br \/>)\\s*\\n|', \"&#60;br \/>\\n\", $pee); \/\/ optionally make line breaks\r\n                                                                                                                                         \r\n        \/\/ Don't add &#60;br> between &#60;pre>&#60;\/pre>\r\n        $result_pee = '';\r\n        $split_pee = preg_split('\/(&#60;pre>|&#60;\\\/pre>)\/', $pee, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);\r\n\tforeach ($split_pee as $partial_pee) {\r\n\t\tif (preg_match('\/(&#60;pre>)\/', $partial_pee)) {\r\n\t\t\t$result_pee = $result_pee . $partial_pee; \/\/ Just &#60;pre>\r\n\t\t\t$open_pre_tag = 1;\r\n\t\t} else if (preg_match('\/(&#60;\\\/pre>)\/', $partial_pee)) {\r\n\t\t\t$result_pee = $result_pee . $partial_pee; \/\/ Just &#60;\/pre>\r\n\t\t\t$open_pre_tag = 0;\r\n\t\t} else {\r\n                        \/\/ make paragraphs, including one at the end\r\n                        if ($open_pre_tag == 0) {\r\n                                $partial_pee = preg_replace('\/\\n?(.+?)(?:\\n\\s*\\n|\\z)\/s', \"\\t&#60;p>$1&#60;\/p>\\n\", $partial_pee);\r\n                                \/\/ optionally make line breaks unless we are in a &#60;pre>&#60;\/pre>\r\n                                if ($br) {\r\n                                        $partial_pee = preg_replace('|(?&#60;!&#60;br \/>)\\s*\\n|', \"&#60;br \/>\\n\", $partial_pee);\r\n                                }\r\n                        }\r\n                        $result_pee = $result_pee . $partial_pee;\r\n                }\r\n\t}\r\n\t$pee = $result_pee;\r\n                                                                                                                                         \r\n        $pee = preg_replace('!(&#60;\/?(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)\\s*&#60;br \/>!', \"$1\", $pee);\r\n        $pee = preg_replace('!&#60;br \/>(\\s*&#60;\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)!', '$1', $pee);\r\n        $pee = preg_replace('\/&([^#])(?![a-z]{1,8};)\/', '&#038;$1', $pee);\r\n                                                                                                                                         \r\n        return $pee;\r\n}\r\n<\/pre>\n<p>He observado que la versi\u00f3n 1.2 beta de wordpress tambi\u00e9n tiene el mismo problema as\u00ed que he puesto un <a href=\"http:\/\/wordpress.org\/support\/index.php?action=vthread&#038;forum=6&#038;topic=5092\">post<\/a> en el foro de wordpress a ver si a\u00f1aden esta soluci\u00f3n o hacen otra mejor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como comentaba en mi \u00faltimo post, wordpress (el sistema de blog que utilizo) tiene un peque\u00f1o fallo, por defecto a\u00f1ade etiquetas de nueva linea &#8220;br&#8221; a todos los finales de linea del texto, de forma que cuando escribes un post no hace falta indicarlo manualmente. El inconveniente es que realiza tambi\u00e9n esa modificaci\u00f3n el texto &hellip; <a href=\"https:\/\/www.marblestation.com\/?p=101\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Bug wordpress solucionado<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,6],"tags":[],"class_list":["post-101","post","type-post","status-publish","format-standard","hentry","category-espanyol","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=101"}],"version-history":[{"count":1,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/101\/revisions"}],"predecessor-version":[{"id":1823,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/101\/revisions\/1823"}],"wp:attachment":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}