tag:blogger.com,1999:blog-61280028875670808092024-03-19T09:43:56.420-03:00La er@ de la #web 2.0"Desde un rincón de tu garage, desde un bar o debajo de un árbol, podés arrancar el proyecto más apasionante de tu vida…"jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.comBlogger468125tag:blogger.com,1999:blog-6128002887567080809.post-23851465138938641122019-10-28T15:07:00.000-03:002019-10-28T15:08:07.007-03:00WordPress - Agregar campo editable desde Edición Rápida<div dir="ltr"><div class="gmail_default" style="font-size:small"><font face="monospace" color="#ff0000"># Nuevo campo para ordenar<br><br>function pampa_quickedit_custom_posts_columns( $posts_columns ) {<br> $posts_columns['pampa_orden'] = __( 'Orden', 'pampa' );<br> return $posts_columns;<br>}<br>add_filter( 'manage_portfolio_posts_columns', 'pampa_quickedit_custom_posts_columns' );<br><br># Visibilidad de columna en el backend<br><br>function pampa_quickedit_custom_column_display( $column_name, $post_id ) {<br> if ( 'pampa_orden' == $column_name ) {<br> $pampa_orden = get_post_meta( $post_id, 'pampa_orden', true );<br><br> if ( $pampa_orden ) {<br> echo esc_html( $pampa_orden );<br> } else {<br> esc_html_e( 'N/D', 'pampa' );<br> }<br> }<br>}<br>add_action( 'manage_portfolio_posts_custom_column', 'pampa_quickedit_custom_column_display', 10, 2 );<br><br># Visibilidad en Edición Rápida<br><br>function pampa_quickedit_fields( $column_name, $post_type ) {<br> if ( 'pampa_orden' != $column_name )<br> return;<br><br> $pampa_orden = get_post_meta( $post_id, 'pampa_orden', true );<br> ?><br> <fieldset class="inline-edit-col-right"><br> <div class="inline-edit-col"><br> <label><br> <span class="title"><?php esc_html_e( 'Orden', 'pampa' ); ?></span><br> <span class="input-text-wrap"><br> <input type="number" min="1" name="pampa_orden" class="pampaOrden" value="" style="width: auto; margin-left: -31px;"><br> </span><br> </label><br> </div><br> </fieldset><br> <?php<br>}<br>add_action( 'quick_edit_custom_box', 'pampa_quickedit_fields', 10, 2 );<br><br># Almacenar datos en la base de datos<br><br>function pampa_quickedit_save_post( $post_id, $post ) {<br> // if called by autosave, then bail here<br> if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )<br> return;<br><br> // if this "post" post type?<br> if ( $post->post_type != 'portfolio' )<br> return;<br><br> // does this user have permissions?<br> if ( ! current_user_can( 'edit_post', $post_id ) )<br> return;<br><br> // update!<br> if ( isset( $_POST['pampa_orden'] ) ) {<br> update_post_meta( $post_id, 'pampa_orden', $_POST['pampa_orden'] );<br> }<br>}<br>add_action( 'save_post', 'pampa_quickedit_save_post', 10, 2 );<br><br># Cargar el valor del campo en la edición rápida<br><br>function pampa_quickedit_javascript() {<br> $current_screen = get_current_screen();<br> if ( $current_screen->id != 'edit-portfolio' || $current_screen->post_type != 'portfolio' )<br> return;<br><br> // Ensure jQuery library loads<br> wp_enqueue_script( 'jquery' );<br> ?><br> <script type="text/javascript"><br> jQuery( function( $ ) {<br> $( '#the-list' ).on( 'click', 'button.editinline', function( e ) {<br> e.preventDefault();<br> var pampaOrden = $(this).data( 'pampa-orden' );<br> inlineEditPost.revert();<br> $( '.pampaOrden' ).val( pampaOrden ? pampaOrden : '' );<br> });<br> });<br> </script><br> <?php<br>}<br>add_action( 'admin_print_footer_scripts-edit.php', 'pampa_quickedit_javascript' );<br><br>function pampa_quickedit_set_data( $actions, $post ) {<br> $found_value = get_post_meta( $post->ID, 'pampa_orden', true );<br><br> if ( $found_value ) {<br> if ( isset( $actions['inline hide-if-no-js'] ) ) {<br> $new_attribute = sprintf( 'data-pampa-orden="%s"', esc_attr( $found_value ) );<br> $actions['inline hide-if-no-js'] = str_replace( 'class=', "$new_attribute class=", $actions['inline hide-if-no-js'] );<br> }<br> }<br><br> return $actions;<br>}<br>add_filter('post_row_actions', 'pampa_quickedit_set_data', 10, 2);</font><br></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-13886629651636215322019-10-28T15:05:00.001-03:002019-10-28T15:05:45.119-03:00WordPress - Ordenar por campos custom teniendo en cuenta nulos<div dir="ltr"><div class="gmail_default" style="font-size:small">Esta es una primera solución</div><div class="gmail_default" style="font-size:small"><br><font face="monospace" color="#ff0000"> add_action( 'pre_get_posts', 'orden_portfolio' );<br> function orden_portfolio( $query ) {<br> <br> if( ! is_admin() ) {<br> <br> $query->set( 'orderby', 'meta_value_num' );<br> $query->set( 'order', 'ASC' );<br> $query->set( 'meta_query', [<br> 'relation' => 'OR',<br> [ <br> 'key' => 'ce_orden', <br> 'compare' => 'NOT EXISTS' ],<br> [<br> 'key' => 'ce_orden',<br> 'compare' => 'EXISTS',<br> ],<br> ] );<br> <br> return $query;<br> <br> }<br> <br> }<br></font><br>Sin embargo, esta solución muestra primero los registros con meta_value nulo. Esta otra solución, muestra orden ASC y nulos al final:<br><br><font face="monospace" color="#ff0000"> function custom_join($join) {<br> global $wpdb;<br> <br> if( ! is_admin() ) {<br> $join .= $wpdb->prepare(<br> ' LEFT JOIN ' . $wpdb->postmeta . ' cpm ON cpm.post_id = ' . $wpdb->posts . '.ID AND cpm.meta_key = %s'<br> , 'ce_orden' );<br> }<br> <br> return $join;<br> }<br> <br> add_filter('posts_join','custom_join');<br> <br> function custom_orderby($orderby_statement){<br> global $wpdb;<br> <br> if ( ! is_admin() ) {<br> $orderby_statement = "CAST( COALESCE(cpm.meta_value,99999) as SIGNED INTEGER) ASC";<br> }<br> <br> return $orderby_statement;<br> }<br> <br> add_filter('posts_orderby','custom_orderby', 10, 2 ); <br></font><br></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-70331048125344512882019-04-17T09:02:00.001-03:002019-04-17T09:02:35.010-03:00Redireccionamiento erróneo en copia de sitio WordPress<div dir="ltr"><div class="gmail_default" style="font-size:small">Muchas veces necesitamos crear una copia de nuestro sitio WordPress de producción para hacer pruebas. Esto puede hacerse dentro del mismo servicio de hosting, en un subdominio o dominio diferente.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Es posible que al ingresar al nuevo subdominio, nos redireccione al stio de producción. Esto puede deberse a dos motivos (o más):</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><b>1) No hemos configurado dentro de WordPress el nuevo dominio o subdominio</b></div><div class="gmail_default" style="font-size:small"><b><br></b></div><div class="gmail_default" style="font-size:small">Para ello hay que modificar la tabla de opciones de la base de datos siguiendo estas reglas: <a href="https://codex.wordpress.org/Changing_The_Site_URL">https://codex.wordpress.org/Changing_The_Site_URL</a></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><b>2) Podemos tener algún problema de caché</b></div><div class="gmail_default" style="font-size:small"><b><br></b></div><div class="gmail_default" style="font-size:small">Lo primero que debemos hacer es ingresar desde una ventana de navegador en modo <b>incógnito</b>. Si esto funciona, ya sabemos que el problema se de <b>caché</b>.</div><div class="gmail_default" style="font-size:small">En ese caso, limpiamos el caché local o accedemos con esa opción des habilitada como muestra esta imagen:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIkEGnv8iQ4iFLWjdiUIlfCj64mbY-cruWv2JVnTcLgZU8qtbXfkA9RGVOR43P0gpLzTibXBwY6ge53ymtcgsOkLGgQJ-qrr2ZyovStRI-5EjBmCj7cTn8BXf_f1oQ1oKKFYpaRlZzWKAT/s1600/image-755078.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIkEGnv8iQ4iFLWjdiUIlfCj64mbY-cruWv2JVnTcLgZU8qtbXfkA9RGVOR43P0gpLzTibXBwY6ge53ymtcgsOkLGgQJ-qrr2ZyovStRI-5EjBmCj7cTn8BXf_f1oQ1oKKFYpaRlZzWKAT/s320/image-755078.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6680832603895868146" /></a><br></div></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-63496946258906759652019-04-08T11:35:00.001-03:002019-04-08T11:35:42.026-03:00Laravel - proc_open - Schedule:run<div dir="ltr"><div class="gmail_default" style="font-size:small">El siguiente error se produce al utilizar el programador de tareas de Laravel.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><span style="color:rgb(255,0,0);font-size:12px">The Process class relies on proc_open, which is not available on your PHP installation.</span> </div><div class="gmail_default" style="font-size:small"><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2kHO_rLkvdtZguo6PR2F-EvyoiG6XtgtVCWH5q23JHuqcNuUaF8DeiS-NBeOQBsL1Ni8N0FAx5i7l6rNYI6nwyd0T3OReDSrzoy-JOX5djgzcyF-pb6OIlhnIJIVjSFkqY0KfztZubfo1/s1600/image-742034.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2kHO_rLkvdtZguo6PR2F-EvyoiG6XtgtVCWH5q23JHuqcNuUaF8DeiS-NBeOQBsL1Ni8N0FAx5i7l6rNYI6nwyd0T3OReDSrzoy-JOX5djgzcyF-pb6OIlhnIJIVjSFkqY0KfztZubfo1/s320/image-742034.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6677532297919486690" /></a><br></div><div><br></div><div><div class="gmail_default" style="font-size:small">Si no existe forma de habilitar proc_open, una alternativa es saltear al programador de tareas de Laravel y programar el comando directamente en el cron:</div><div class="gmail_default" style="font-size:small"><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQkrdbFRnUDJ9pErPGh7BEaoX0AL6g_czPJdL8C5UiS7ZwQN4NUDSJBeiADCkTAWGixHmgk8HaRZ8VTqXxxFQBb7n2Pn_yZacP1ZMwAZnUxFC9Idztb2WRvTZnfaZ6l0SCxArKp7FChNQ7/s1600/image-744755.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQkrdbFRnUDJ9pErPGh7BEaoX0AL6g_czPJdL8C5UiS7ZwQN4NUDSJBeiADCkTAWGixHmgk8HaRZ8VTqXxxFQBb7n2Pn_yZacP1ZMwAZnUxFC9Idztb2WRvTZnfaZ6l0SCxArKp7FChNQ7/s320/image-744755.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6677532308437152850" /></a><br></div><div class="gmail_default" style="font-size:small"><br></div></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><span style="color:rgb(199,37,78);font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12.6px;background-color:rgb(249,242,244)">/usr/local/bin/php -q /home/bdig/mm/artisan command:CronJobEncuestas</span> <br></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-19243649944563227562019-03-29T10:21:00.001-03:002019-03-29T10:21:28.914-03:00Laravel - Limpiar caché en un hosting<div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">A veces no tenemos acceso <b>SSH </b>y no podemos ejecutar comandos <b>artisan</b> como el siguiente en un alojamiento compartido:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default"><b>php artisan config:cache</b><br></div><div class="gmail_default"><br></div><div class="gmail_default">Una alternativa es crear una ruta como:</div><div class="gmail_default"><br></div><div class="gmail_default"><pre class="gmail-lang-php gmail-prettyprint gmail-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;background-color:rgb(239,240,241);border-radius:3px;color:rgb(57,51,24)"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;white-space:inherit"><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Route</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">get</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'/config-cache'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">,</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">function</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">()</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">{</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> $exitCode </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">=</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Artisan</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">call</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'config:cache'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">);</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">return</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'<h1>Clear Config cleared</h1>'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">;</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">});</span></code></pre></div><div class="gmail_default"><br></div><div class="gmail_default" style="font-size:small">Otras opciones:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><pre class="gmail-lang-php gmail-prettyprint gmail-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;background-color:rgb(239,240,241);border-radius:3px;color:rgb(57,51,24)"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;white-space:inherit"><span class="gmail-com" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(133,140,147)">//Clear Cache facade value:</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Route</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">get</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'/clear-cache'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">,</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">function</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">()</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">{</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> $exitCode </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">=</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Artisan</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">call</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'cache:clear'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">);</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">return</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'<h1>Cache facade value cleared</h1>'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">;</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">});</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-com" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(133,140,147)">//Reoptimized class loader:</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Route</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">get</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'/optimize'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">,</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">function</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">()</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">{</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> $exitCode </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">=</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Artisan</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">call</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'optimize'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">);</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">return</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'<h1>Reoptimized class loader</h1>'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">;</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">});</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-com" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(133,140,147)">//Route cache:</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Route</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">get</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'/route-cache'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">,</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">function</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">()</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">{</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> $exitCode </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">=</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Artisan</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">call</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'route:cache'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">);</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">return</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'<h1>Routes cached</h1>'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">;</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">});</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-com" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(133,140,147)">//Clear Route cache:</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Route</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">get</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'/route-clear'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">,</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">function</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">()</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">{</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> $exitCode </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">=</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Artisan</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">call</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'route:clear'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">);</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">return</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'<h1>Route cache cleared</h1>'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">;</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">});</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-com" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(133,140,147)">//Clear View cache:</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Route</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">get</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'/view-clear'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">,</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">function</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">()</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">{</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> $exitCode </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">=</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Artisan</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">call</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'view:clear'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">);</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">return</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'<h1>View cache cleared</h1>'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">;</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">});</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-com" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(133,140,147)">//Clear Config cache:</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Route</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">get</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'/config-cache'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">,</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">function</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">()</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">{</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> $exitCode </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">=</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(43,145,175)">Artisan</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">::</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">call</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">(</span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'config:cache'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">);</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-kwd" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(16,16,148)">return</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)">'<h1>Clear Config cleared</h1>'</span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">;</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)"> </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">});</span></code></pre></div><div class="gmail_default" style="font-size:small">Fuente de esta gran solución: <a href="https://stackoverflow.com/a/41650432/2144424">https://stackoverflow.com/a/41650432/2144424</a></div></div></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-73561699253770971422019-03-20T16:19:00.001-03:002019-03-20T16:19:52.073-03:00Laravel - proc_open - Composer<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">En caso de encontrar el siguiente error al tratar de ejecutar algún comando de Composer en un servidor compartido, particularmente cuando usan Laravel (o no), es posible que la única solución sea pedir al soporte del hosting que se lo habilite temporalmente (en mi caso lo solucioné así). O pasar a un VPS:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default"><font color="#ff0000">The Process class relies on proc_open, which is not available on your PHP installation.</font><br></div><div class="gmail_default"><br></div><div class="gmail_default"><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRVlGIAnhxNdHCPs90GgCMbQHSlaUbWm2to0hyZcOnjrg_D6QjL1qqfo3j26VEv3LFAOryS2CO4WPSSZKxMhHsBrUWDS8CTp39ruNGfMXhn1lLBZLOY9dHWZJnRmgEt_IHbp-Kr_98GJsV/s1600/image-792110.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRVlGIAnhxNdHCPs90GgCMbQHSlaUbWm2to0hyZcOnjrg_D6QjL1qqfo3j26VEv3LFAOryS2CO4WPSSZKxMhHsBrUWDS8CTp39ruNGfMXhn1lLBZLOY9dHWZJnRmgEt_IHbp-Kr_98GJsV/s320/image-792110.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6670554906788786178" /></a><br></div></div></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-19085603946459714452019-03-20T16:13:00.001-03:002019-03-20T16:13:14.252-03:00Laravel - Rendimiento<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">En caso que experimenten problemas de rendimiento en Laravel, especialmente en la pantalla de inicio (login), un comando que realmente mejora mucho es:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><pre class="gmail-lang-php gmail-prettyprint gmail-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;background-color:rgb(239,240,241);border-radius:3px;color:rgb(57,51,24)"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;white-space:inherit"><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">composer dumpautoload </span><span class="gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">-</span><span class="gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(48,51,54)">o</span></code></pre></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Más información en: <a href="https://stackoverflow.com/a/49038187/2144424">https://stackoverflow.com/a/49038187/2144424</a></div></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-53657701192499470222018-09-07T15:31:00.001-03:002018-09-07T15:31:48.316-03:00Tips para mejorar velocidad de un sitio web (parte 2)<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><b>Paso 5 (Query strings)</b></div><div class="gmail_default" style="font-size:small"><b><br></b></div><div class="gmail_default" style="font-size:small">Pueden ver este artículo para ayuda: <a href="https://ayudawp.com/solucionar-error-remove-query-strings-from-static-resources-wordpress/">https://ayudawp.com/solucionar-error-remove-query-strings-from-static-resources-wordpress/</a></div><div class="gmail_default" style="font-size:small">O probar directo con este plugin: <a href="https://es.wordpress.org/plugins/remove-query-strings-from-static-resources/">https://es.wordpress.org/plugins/remove-query-strings-from-static-resources/</a></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><b>Paso 6 (Bloqueos de JavaScript o CSS)</b></div><div class="gmail_default" style="font-size:small"><b><br></b></div><div class="gmail_default"><span style="font-size:small">Pueden ver este artículo: </span><a href="https://kinsta.com/es/blog/google-pagespeed-insights/">https://kinsta.com/es/blog/google-pagespeed-insights/</a></div><div class="gmail_default">O probar directo con estos plugins:</div><div class="gmail_default"><ul><li><a href="https://wordpress.org/plugins/async-javascript/">https://wordpress.org/plugins/async-javascript/</a><br></li><li><a href="https://wordpress.org/plugins/autoptimize/">https://wordpress.org/plugins/autoptimize/</a><br></li></ul></div><div class="gmail_default"> <b>Paso 7 (Google Analytics)</b></div><div class="gmail_default"><b><br></b></div><div class="gmail_default">Instalarlo localmente con : <a href="https://wordpress.org/plugins/host-analyticsjs-local">https://wordpress.org/plugins/host-analyticsjs-local</a></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br></div></div></div></div></div></div></div></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-62598431241697367082017-08-22T17:34:00.001-03:002017-09-11T13:02:37.383-03:00Tips para mejorar velocidad de un sitio web<div dir="ltr">
<div>
<b>Paso 1 (compresión):</b></div>
<div>
<br /></div>
<div>
<span style="background-color: rgba(0 , 0 , 0 , 0.85); color: rgb(255 , 255 , 255); font-family: "operator mono ssm a" , "operator mono ssm b" , "source code pro" , "menlo" , "consolas" , "monaco" , monospace; font-size: 16px; white-space: pre;"># BEGIN GZIP <ifmodule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript </ifmodule> # END GZIP</span></div>
<div>
<span style="background-color: rgba(0 , 0 , 0 , 0.85); color: rgb(255 , 255 , 255); font-family: "operator mono ssm a" , "operator mono ssm b" , "source code pro" , "menlo" , "consolas" , "monaco" , monospace; font-size: 16px; white-space: pre;"><br /></span></div>
<div>
<div>
Fuente: <a href="https://css-tricks.com/snippets/htaccess/active-gzip-compression/">https://css-tricks.com/snippets/htaccess/active-gzip-compression/</a></div>
</div>
<div>
<br /></div>
<div>
<b>Paso 2: (achicar imágenes)</b></div>
<div>
<br /></div>
<div>
Pueden reducir usando <a href="http://compresspng.com/es/">http://compresspng.com/es/</a> , <a href="http://compressjpeg.com/es/">http://compressjpeg.com/es/</a> o cualquier otra herramienta.</div>
<div>
<br /></div>
<div>
<b>Paso 3 (caché del navegador)</b></div>
<div>
<b><br /></b></div>
<div>
<h4 style="border: 0px; box-sizing: inherit; color: rgb(0 , 0 , 0); font-family: "open sans" , "helvetica neue" , sans-serif; font-size: 16px; font-stretch: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; box-sizing: inherit; color: rgb(85 , 85 , 85); font-family: "consolas" , "monaco" , monospace; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">## EXPIRES HEADER CACHING ##</span></h4>
<pre style="background: rgb(250 , 250 , 250); border-radius: 4px; border: 0px; box-sizing: inherit; color: rgb(0 , 0 , 0); font-size: 14px; font-stretch: inherit; line-height: inherit; margin-bottom: 22px; margin-top: 0px; padding: 22px; vertical-align: baseline; white-space: pre-line;"><IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType application/javascript "access 1 month" ExpiresByType application/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 2 days" </IfModule> ## EXPIRES HEADER CACHING ##</pre>
</div>
<div>
Fuente: <a href="https://kinsta.com/es/blog/google-pagespeed-insights/">https://kinsta.com/es/blog/google-pagespeed-insights/</a><br />
<br />
<b>Paso 4 (detalles)</b></div>
<div>
<b><br /></b></div>
<div>
A partir de acá hay que empezar a ver los detalles de cada caso. Buscar los cuellos de botella y trabajar a partir de eso. Estos gráficos ayudan:</div>
<div>
<br /></div>
<div>
<div id="gmail_bpegh9i4uzgh" style="display: inline-block;">
<div>
<br /></div>
</div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoHNojkr-m9RM-z2AhIey9WpydbdRd_D-rU776sQKVNqwnkV7gc1csHSc2y2_J3M3MyeySb1Xy1ERV6sibYmZM0lNATpT7h9MgbEI4fQP-o0xD_-JG4s6Y6zT6qKwwdZlda_tnNqDfsxfd/s1600/image-790442.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6457200253723903650" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoHNojkr-m9RM-z2AhIey9WpydbdRd_D-rU776sQKVNqwnkV7gc1csHSc2y2_J3M3MyeySb1Xy1ERV6sibYmZM0lNATpT7h9MgbEI4fQP-o0xD_-JG4s6Y6zT6qKwwdZlda_tnNqDfsxfd/s320/image-790442.png" /></a></div>
<div>
<br /></div>
<div>
También verificar errores de páginas no encontradas...</div>
</div>
jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-52260022581283445142017-04-19T15:09:00.001-03:002017-04-19T15:09:11.546-03:00El mundo sigue apuntando a WordPress<div dir="ltr"><b>El 27.8 % de la web está hecha en WordPress:</b><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijC4LRFpat47N3-dYE5ELI3SbqgJY3ZDIxPxEJTx27ZMYXdrjP_LV-fvZefZsgRcxu9cfFki1IzjzsxFt0JTlmIgyFN7iSBivTLC1gmJaRomaI7d4HA5NEg0CxSm1TwvqN9JwrVpSBrc0E/s1600/image-751548.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijC4LRFpat47N3-dYE5ELI3SbqgJY3ZDIxPxEJTx27ZMYXdrjP_LV-fvZefZsgRcxu9cfFki1IzjzsxFt0JTlmIgyFN7iSBivTLC1gmJaRomaI7d4HA5NEg0CxSm1TwvqN9JwrVpSBrc0E/s320/image-751548.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6410777071531705186" /></a><br></div><div><br></div><div>Fuente: <a href="https://w3techs.com/technologies/history_overview/content_management/all">https://w3techs.com/technologies/history_overview/content_management/all</a></div><div><br></div><div><b>El 58.9 % de las webs que usan un CMS están hechas en WordPress:</b><br></div><div><b><br></b></div><div><b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiU36t8I4D85ibpoNhmVJ1wRArvfwneLq8CIC3EwYg2JgLyH1-gudC3h7frFwr6H8oycMY2Apu5HQNEte-07i2YS2reAvNBN-Dr0Mddw0CBlYZIt0wMEyfM1FnrgCOmXfvveIyc1fAhgLh/s1600/image-752622.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiU36t8I4D85ibpoNhmVJ1wRArvfwneLq8CIC3EwYg2JgLyH1-gudC3h7frFwr6H8oycMY2Apu5HQNEte-07i2YS2reAvNBN-Dr0Mddw0CBlYZIt0wMEyfM1FnrgCOmXfvveIyc1fAhgLh/s320/image-752622.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6410777075117815026" /></a><br></b></div><div><b><br></b></div><div>Fuente: <a href="https://w3techs.com/technologies/overview/content_management/all">https://w3techs.com/technologies/overview/content_management/all</a></div><div><b><br></b></div><div><b><br></b></div><div><b><br></b></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-28445004309035443402017-04-06T11:55:00.001-03:002017-04-06T11:57:19.323-03:00HTML: combo de selección multiple alternativo<div dir="ltr">
En este breve artículo les muestro una alternativa al combo de selección múltiple estándar de HTML. ¿Por qué una alternativa? Porque el estándar requiere que el usuario presione la tecla CONTROL lo que lo hace poco usable.<br />
<div>
<br /></div>
<div>
<b>Estándar</b></div>
<div>
<b><br /></b></div>
<div>
<a href="https://www.w3schools.com/tags/att_select_multiple.asp">https://www.w3schools.com/tags/att_select_multiple.asp</a></div>
<div>
<br />
<div>
<b>Alternativa</b></div>
<div>
<ul>
<li>Usamos casillas de verificación</li>
<li>Se puede ocultar para que no ocupe lugar en pantalla</li>
</ul>
<div>
<br /></div>
</div>
<div>
Visualmente se ve así antes de abrirlo:</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEDiWik3qnYo9h6VKxthIufFZoBiBkxhLIytMJFeiFr1B4HkzFnnJ5MGRsU3cpwDR5rquWYZG90HN8HyMgkkbkN2Ifj6EyxwBzjoLUDx6cK3ZSfbFmZTq6TmPa5a_YJVWjdws091FuXzXz/s1600/image-746827.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6405903122099012018" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEDiWik3qnYo9h6VKxthIufFZoBiBkxhLIytMJFeiFr1B4HkzFnnJ5MGRsU3cpwDR5rquWYZG90HN8HyMgkkbkN2Ifj6EyxwBzjoLUDx6cK3ZSfbFmZTq6TmPa5a_YJVWjdws091FuXzXz/s320/image-746827.png" /></a></div>
<div>
<br /></div>
<div>
Y así cuando está abierto:</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBqLTjcE82sJuCg3Qnsvcrvfhq1S-RbGmxINV160ytb7piRAmI4gao62PpIW6YeeAkm5gt0c7-t0mFXK7cSUggXno59OWchvkKThXHmlRJAjgTCe_kboZNLhKO2U9pRXKH3zfyXdMoljnF/s1600/image-747669.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6405903121989829362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBqLTjcE82sJuCg3Qnsvcrvfhq1S-RbGmxINV160ytb7piRAmI4gao62PpIW6YeeAkm5gt0c7-t0mFXK7cSUggXno59OWchvkKThXHmlRJAjgTCe_kboZNLhKO2U9pRXKH3zfyXdMoljnF/s320/image-747669.png" /></a></div>
<div>
<br /></div>
<div>
<b>Código en jsfiddle</b></div>
<div>
<br /></div>
<div>
<a href="https://jsfiddle.net/jpussacq/m0ar2qtL/">https://jsfiddle.net/jpussacq/m0ar2qtL/</a></div>
<div>
<br /></div>
<script async="" src="//jsfiddle.net/jpussacq/m0ar2qtL/embed/"></script>
<div>
<br /></div>
<div>
<b>Transcripción del código</b></div>
<div>
<br /></div>
<div>
<b>HTML</b></div>
<div>
<br /></div>
<div>
<div>
<div></div>
<div>
<br /></div>
<div>
Hito:</div>
<div>
<br /></div>
<div>
<input id='btnAbrirFiltro' type="button" value="Filtro múltiple" onclick="$('.contenedor').toggle();$('#btnFiltrar').toggle();$('#btnAbrirFiltro').toggle();$('#btnCerrarFiltro').toggle();"></div>
<div>
<br /></div>
<div>
<input id='btnCerrarFiltro' type="button" value="Cerrar" style="display: none;" onclick="$('.contenedor').toggle();$('#btnFiltrar').toggle();$('#btnAbrirFiltro').toggle();$('#btnCerrarFiltro').toggle();"></div>
<div>
<br /></div>
<div>
<input id='btnFiltrar' type="button" value="Filtrar" style="display: none;" onclick="obtenerSeleccionados()"></div>
<div>
<br /></div>
<div>
<div class="contenedor" style="display: none;"></div>
<div>
<input id="cfh_1" type="checkbox" /> Hito 1</div>
<div>
<br /></div>
<div>
<input id="cfh_2" type="checkbox" /> Hito 2</div>
<div>
<br /></div>
<div>
<input id="cfh_3" type="checkbox" /> Hito 3</div>
<div>
<br /></div>
<div>
<input id="cfh_4" type="checkbox" /> Hito 4</div>
<div>
<br /></div>
<div>
<input id="cfh_5" type="checkbox" /> Hito 5</div>
<div>
<br /></div>
<div>
<input id="cfh_7" type="checkbox" /> Hito 6</div>
<div>
<br /></div>
<div>
<input id="cfh_8" type="checkbox" /> Hito 7</div>
<div>
<br /></div>
<div>
<input id="cfh_4567" type="checkbox" /> Hito 8</div>
<div>
<br /></div>
<div>
<input id="cfh_345" type="checkbox" /> Hito Implementación final del evento</div>
<div>
<br /></div>
<div>
<input id="cfh_45671" type="checkbox" /> Hito a8</div>
<div>
<br /></div>
<div>
<input id="cfh_45672" type="checkbox" /> Hito s8</div>
<div>
<br /></div>
<div>
<input id="cfh_45673" type="checkbox" /> Hito d8</div>
<div>
<br /></div>
<div>
<input id="cfh_45674" type="checkbox" /> Hito f8</div>
<div>
<br /></div>
<div>
<input id="cfh_45675" type="checkbox" /> Hito g8</div>
<div>
<br /></div>
<div>
</div></div>
<div>
<br /></div>
<div>
</div></div>
<div>
<br /></div>
<div>
Lorem ipsum dolor sit amet, libero nullam dolor, auctor consequat. Risus donec nunc nulla maecenas, at mattis, arcu tempor. Faucibus velit vitae arcu mauris, sem blandit elementum. Conubia pede interdum urna suspendisse eget. Vestibulum malesuada amet</div>
<div>
ac vel ligula, leo aenean, ac ultrices nec class, consectetuer adipiscing massa in sint morbi justo, sit maecenas a sit. Enim molestie, porta enim, dolor suscipit sagittis, donec ornare sed aenean aliquet parturient blandit. Quisque nisl tempus arcu lobortis</div>
<div>
massa quis, pede praesent nulla et eget sed, facilisi nunc elit erat. Volutpat mauris pellentesque magna aliquam dolor facilisi. Nec orci, nunc imperdiet feugiat. Erat est vestibulum nec et, eu eros tempus morbi netus, congue pellentesque vivamus, tellus</div>
<div>
eleifend maecenas mus sodales blandit et, sed vulputate rhoncus lobortis amet id inceptos. Magna vestibulum elit vel aenean, aliquam praesent vestibulum sed fringilla amet volutpat, cras mauris suscipit pretium.</div>
</div>
<div>
<br /></div>
<div>
<b>CSS</b></div>
<div>
<b><br /></b></div>
<div>
<div>
.contenedor {</div>
<div>
border: 1px solid grey;</div>
<div>
width: 200px;</div>
<div>
height: 200px;</div>
<div>
overflow-y: scroll;</div>
<div>
position: fixed;</div>
<div>
background: white;</div>
<div>
margin-top: 2px;</div>
<div>
}</div>
<div>
<br /></div>
<div>
<b>JAVASCRIPT</b></div>
</div>
<div>
<br /></div>
<div>
<div>
function obtenerSeleccionados() {</div>
<div>
var seleccionados = [];</div>
<div>
$('.contenedor input:checked').each(function() {</div>
<div>
seleccionados.push($(this).attr('id'));</div>
<div>
});</div>
<div>
alert(seleccionados);</div>
<div>
}</div>
</div>
<div>
<br /></div>
</div>
</div>
jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-46637545711281401802017-03-28T11:18:00.001-03:002017-03-28T11:18:24.856-03:00WordPress - Consulta "Empieza con"<div dir="ltr">Supongamos que queremos hacer una consulta filtrando aquellos posts que comienzan con una determinada cadena. No podemos usar el operador LIKE ya que WordPress agrega un % (<b>comodín</b>) al principio y al final del valor de comparación. Por lo tanto recurrimos a una expresión regular. Veamos este ejemplo:<div><br></div><div><div><font color="#0000ff" face="monospace, monospace"> $argsCertificado = array( </font></div><div><font color="#0000ff" face="monospace, monospace"> 'post_type' => 'proceso', </font></div><div><font color="#0000ff" face="monospace, monospace"> <span class="gmail-Apple-tab-span" style="white-space:pre"> </span>'numberposts' => 1000,</font></div><div><font color="#0000ff" face="monospace, monospace"> 'meta_key' => 'numero_de_certificado',</font></div><div><font color="#0000ff" face="monospace, monospace"> 'orderby' => 'meta_value', </font></div><div><font color="#0000ff" face="monospace, monospace"> 'order' => DESC,</font></div><div><font color="#0000ff" face="monospace, monospace"> 'meta_query'<span class="gmail-Apple-tab-span" style="white-space:pre"> </span>=> array(</font></div><div><font color="#0000ff" face="monospace, monospace"> 'key'<span class="gmail-Apple-tab-span" style="white-space:pre"> </span>=> 'tipo_de_proceso',</font></div><div><font face="monospace, monospace" color="#ff0000"><b> 'compare'<span class="gmail-Apple-tab-span" style="white-space:pre"> </span>=> 'REGEXP',</b></font></div><div><font face="monospace, monospace" color="#ff0000"><b> 'value'<span class="gmail-Apple-tab-span" style="white-space:pre"> </span>=> '^Certif'</b></font></div><div><font color="#0000ff" face="monospace, monospace"> )</font></div><div><font color="#0000ff" face="monospace, monospace"> );</font></div><div><font color="#0000ff" face="monospace, monospace"><br></font></div><div><font color="#0000ff" face="monospace, monospace"> <span class="gmail-Apple-tab-span" style="white-space:pre"> </span>$certificados = get_posts( $argsCertificado );</font></div></div><div><br></div><div>Más información en <a href="http://wordpress.stackexchange.com/questions/159426/meta-query-with-string-starting-like-pattern">http://wordpress.stackexchange.com/questions/159426/meta-query-with-string-starting-like-pattern</a></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-8687618833419428812017-03-22T10:45:00.001-03:002017-03-22T10:45:10.280-03:00Kodi - Limpieza de librería de videos<div dir="ltr">Si necesitan que la actualización de una biblioteca, limpie los archivos que borraron físicamente de su disco, pueden usar esta configuración en AdvancedSettings:<div><br></div><div><div><font color="#0000ff" face="monospace, monospace"><advancedsettings></font></div><div><font color="#0000ff" face="monospace, monospace"><videolibrary></font></div><div><font color="#0000ff" face="monospace, monospace"><cleanonupdate>true</cleanonupdate></font></div><div><font color="#0000ff" face="monospace, monospace"></videolibrary></font></div><div><font color="#0000ff" face="monospace, monospace"></advancedsettings></font></div></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-37652029130936110672017-03-22T10:43:00.001-03:002017-03-22T11:11:02.760-03:00Kodi - AdvancedSettings en Windows 10 / Raspberry OSMC<div dir="ltr">
Si necesitan editar el archivo AdvancedSettings de Kodi en Windows 10 pueden seguir los lineamientos de la wiki de Kodi en:<br />
<div>
<br /></div>
<div>
<a href="http://kodi.wiki/view/Userdata_folder">http://kodi.wiki/view/Userdata_folder</a></div>
<div>
<br /></div>
<div>
Si eso no funciona, pueden probar en este path:</div>
<div>
<br /></div>
<div>
C:\Users\<b>tuUsuario</b>\AppData\Local\Packages\XBMCFoundation.Kodi_4n2hpmxwrvr6p\LocalCache\Roaming\Kodi\userdata</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi23y6ZdnV_dgIC_LOfPZgA2SfwfwImdkDwpL4xNhpIiXMCdGyVo-X2I9mvbOgabWkABnbivRl-RtLWYtUBiUmiUpqqyKMUZ_G750gLdabA0722U2Csct0f-LXCNgSIoi6JQaNWTB3tJZaG/s1600/image-712470.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6400318232407616146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi23y6ZdnV_dgIC_LOfPZgA2SfwfwImdkDwpL4xNhpIiXMCdGyVo-X2I9mvbOgabWkABnbivRl-RtLWYtUBiUmiUpqqyKMUZ_G750gLdabA0722U2Csct0f-LXCNgSIoi6JQaNWTB3tJZaG/s320/image-712470.png" /></a><br />
<br />
Para el OSMC de Raspberry es:<br />
<span style="background-color: #f2f2f2; color: #0f8ccb; font-family: "source code pro" , monospace , monospace; font-size: 13.6px;"><br /></span>
/home/osmc/.kodi/userdata/advancedsettings.xml</div>
</div>
jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com1tag:blogger.com,1999:blog-6128002887567080809.post-46948139877892161372017-03-20T16:42:00.001-03:002017-03-22T10:46:05.640-03:00Kodi - Actualizar la librería en forma remota<div dir="ltr">
<span style="color: blue; font-family: monospace , monospace;">xbmc-send -a "UpdateLibrary(video)"</span><br />
<div>
<br /></div>
<div>
Resultado:</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjn51MPmQZO98sPHb3hOmrJ169Wueh13XJD4hKfgyFhWvQDv44Hbu5B5YJwDVaRQvOVzKFHeIuAWtu7mMs6n37W0fYhl7QwjlkLLod8ndZkPNNk9XPygVsaeoO0MAK0uG2TLj2OQlb0gDi/s1600/image-762444.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6399668618508484050" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjn51MPmQZO98sPHb3hOmrJ169Wueh13XJD4hKfgyFhWvQDv44Hbu5B5YJwDVaRQvOVzKFHeIuAWtu7mMs6n37W0fYhl7QwjlkLLod8ndZkPNNk9XPygVsaeoO0MAK0uG2TLj2OQlb0gDi/s320/image-762444.png" /></a>}</div>
<div>
<br /></div>
<div>
Fuente:</div>
<div>
<br /></div>
<div>
<a href="http://boshdirect.com/Blogs/Tech/set-xbmc-to-auto-update-library.html">http://boshdirect.com/Blogs/Tech/set-xbmc-to-auto-update-library.html</a><br />
<br />
Si además quieren evitarse el ingreso de usuario y contraseña del sistema en donde se encuentra instalado el Media Center, en mi caso una Raspberry, pueden hacer estos dos pasos:<br />
<br />
Crean un archivo UpdateKodiLibrary.txt con el comando de actualización:<br />
<br />
xbmc-send -a "UpdateLibrary(video)"<br />
<br />
Luego crean un acceso directo de Windows que ejecute ese archivo:<br />
<br />
"C:\Program Files\PuTTY\putty.exe" -ssh osmc@192.168.1.60 -pw osmc -m "C:\mis archivos\Kodi\Scripts\UpdateKodiLibrary.txt"</div>
</div>
jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-74817790352428256132017-02-20T11:06:00.001-03:002017-02-20T11:06:38.129-03:00WordPress: tamaño máximo se archivos<div dir="ltr">Existen varios tutoriales de cómo aumentar el tamaño máximo de un archivo al momento de subirlo a WordPress. A veces alguno de ellos nos recomiendan desactivar un plugin y no sabemos cuál. Les cuento este caso particular.<div><br></div><div><b>Posible mensaje de error</b></div><div><b><br></b></div><div>En la página estádar de WordPress para subir medios:</div><div><br></div><div><span style="color:rgb(68,68,68);font-family:"open sans",sans-serif;font-size:13px">"Error HTTP"</span><br></div><div><span style="color:rgb(68,68,68);font-family:"open sans",sans-serif;font-size:13px"><br></span></div><div><span style="color:rgb(68,68,68);font-family:"open sans",sans-serif;font-size:13px"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3GMPeRE2d2dWnyiOKCgkLrE9-l03enkHJ3_LCyB1p0mfG3z80GOqr2nMAMYuBGCiqji4jQzx3Y-SFROa5TRLr9fdOHjuSIgQYCeJ1k-DfclsGmzBNTEi8H3ulzruptbPcUja_pQp2XTZ3/s1600/image-798130.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3GMPeRE2d2dWnyiOKCgkLrE9-l03enkHJ3_LCyB1p0mfG3z80GOqr2nMAMYuBGCiqji4jQzx3Y-SFROa5TRLr9fdOHjuSIgQYCeJ1k-DfclsGmzBNTEi8H3ulzruptbPcUja_pQp2XTZ3/s320/image-798130.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6389191623330977202" /></a><br></span></div><div><br></div><div>En un página custom de PHP:</div><div><h1 style="font-family:"times new roman""><font color="#ff0000">Request Entity Too Large</font></h1><font color="#ff0000"><span style="font-family:"times new roman";font-size:medium">The requested resource</span><br style="font-family:"times new roman";font-size:medium"><span style="font-family:"times new roman";font-size:medium">/index.php</span><br style="font-family:"times new roman";font-size:medium"><span style="font-family:"times new roman";font-size:medium">does not allow request data with GET requests, or the amount of data provided in the request exceeds the capacity limit.</span></font><p style="font-family:"times new roman";font-size:medium"><font color="#ff0000">Additionally, a 413 Request Entity Too Large error was encountered while trying to use an ErrorDocument to handle the request.</font></p><div><br></div><div><b>Visualizar el tamaño actual</b></div><div><b><br></b></div><div>Con la instrucción <font color="#0000ff" face="monospace, monospace">phpinfo()</font> pueden ver la configuración a nivel de PHP:</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIgY-8RFxN4FG8DGUF9rYK8nwEg1jFEuCp-LyFKzpNKI47cf7l38JVdkoldKDsCoeW8bmtnJQKtmX38fDzezeI44GzZ4CpRbcdzLhOFzDhFf8AzCDWn2EqOYXKppnaJ_lUrCvzJ2lxRn7y/s1600/image-799107.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIgY-8RFxN4FG8DGUF9rYK8nwEg1jFEuCp-LyFKzpNKI47cf7l38JVdkoldKDsCoeW8bmtnJQKtmX38fDzezeI44GzZ4CpRbcdzLhOFzDhFf8AzCDWn2EqOYXKppnaJ_lUrCvzJ2lxRn7y/s320/image-799107.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6389191630887655458" /></a><br></div><div><br></div><div>Valores a verificar:</div><ul><li>memory_limit <br></li><li>post_max_size <br></li><li>upload_max_filesize<br></li><li>max_execution_time <br></li><li>file_uploads <br></li></ul><div>Más información en <a href="https://www.elegantthemes.com/blog/tips-tricks/is-the-wordpress-upload-limit-giving-you-trouble-heres-how-to-change-it" target="_blank">https://www.elegantthemes.c<wbr>om/blog/tips-tricks/is-the-wor<wbr>dpress-upload-limit-giving-you<wbr>-trouble-heres-how-to-change-<wbr>it</a></div><div><br></div><div>Con <font color="#0000ff" face="monospace, monospace">wp_max_upload_size()</font> pueden ver el valor a nivel de WordPress eb <b>bytes</b>. Más información en: <a href="https://codex.wordpress.org/Function_Reference/wp_max_upload_size" target="_blank">https://codex.wordpress.or<wbr>g/Function_Reference/wp_max_up<wbr>load_size</a></div><div><br></div><div><br></div></div><div><b>Primeras soluciones</b></div><div><b><br></b></div><div>Antes de hacer cosas raras, vean estos enlaces que nos muestran las soluciones más comunes:</div><div><b><br></b></div><div><a href="https://themeskills.com/fix-http-error-when-uploading-images-to-wordpress/" target="_blank">https://themeskills.com/fix-ht<wbr>tp-error-when-uploading-images<wbr>-to-wordpress/</a><br></div><div><br></div><div><a href="http://docs.presscustomizr.com/article/229-fixing-errors-when-uploading-images-in-wordpress" target="_blank">http://docs.presscustomizr.com<wbr>/article/229-fixing-errors-whe<wbr>n-uploading-images-in-wordpres<wbr>s</a><br></div><div><br></div><div><br></div><div><b>Mi caso particular</b></div><div><b><br></b></div><div>En mi caso particular, tenía activado el Firewall del plugin <span style="color:rgb(0,0,0);font-family:"open sans",sans-serif;font-size:14px;font-weight:600;white-space:nowrap">All In One WP Security</span>:</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWbCkcVYf4YFijA64mBkF9_JLJpb0xzZOOvaAPGoA3uWmPZ3_OTv3mvdV2s0XiFUXbFbYCKAA4doQ8SjPYtMo4HbWQ_QxhXh710fZa8NjmL1Z4Zb1kLFefteQM8LClpWBIH7gFiaSZquVm/s1600/image-799870.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWbCkcVYf4YFijA64mBkF9_JLJpb0xzZOOvaAPGoA3uWmPZ3_OTv3mvdV2s0XiFUXbFbYCKAA4doQ8SjPYtMo4HbWQ_QxhXh710fZa8NjmL1Z4Zb1kLFefteQM8LClpWBIH7gFiaSZquVm/s320/image-799870.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6389191633112669474" /></a><br></div><div><br></div><div>La solución es agregar una regla particular como se menciona en este post:</div><div><br></div><div><a href="http://mbrsolution.com/wordpress/one-wp-security-firewall-custom-rules.php">http://mbrsolution.com/wordpress/one-wp-security-firewall-custom-rules.php</a><br></div><div><br></div><div><br></div><div><span style="color:rgb(0,0,255);font-family:monospace,monospace">#AIOWPS_BASIC_HTACCESS_RULES_START</span><br></div><div><div><font color="#0000ff" face="monospace, monospace"><Files .htaccess></font></div><div><font color="#0000ff" face="monospace, monospace">order allow,deny</font></div><div><font color="#0000ff" face="monospace, monospace">deny from all</font></div><div><font color="#0000ff" face="monospace, monospace"></Files></font></div><div><font color="#0000ff" face="monospace, monospace">ServerSignature Off</font></div><div><font color="#0000ff" face="monospace, monospace">LimitRequestBody 20480000</font></div><div><font color="#0000ff" face="monospace, monospace"><Files wp-config.php></font></div><div><font color="#0000ff" face="monospace, monospace">order allow,deny</font></div><div><font color="#0000ff" face="monospace, monospace">deny from all</font></div><div><font color="#0000ff" face="monospace, monospace"></Files></font></div><div><font color="#0000ff" face="monospace, monospace">#AIOWPS_BASIC_HTACCESS_RULES_END</font></div></div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpu8Ihi7HdUBB4p1GWyAW3ibgq3ZUQaVIykdaCcID9lvkhENP5evpQEPfTSrViytjNutXyJQBAW5FrZgn-607PgRy4Ncr8TgJ0F8Ijbrg5hnD-JkWXblANx42XTZhyphenhyphen6jzXCjJgzqmRRL0P/s1600/image-700516.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpu8Ihi7HdUBB4p1GWyAW3ibgq3ZUQaVIykdaCcID9lvkhENP5evpQEPfTSrViytjNutXyJQBAW5FrZgn-607PgRy4Ncr8TgJ0F8Ijbrg5hnD-JkWXblANx42XTZhyphenhyphen6jzXCjJgzqmRRL0P/s320/image-700516.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6389191632717496642" /></a><br></div><div><br></div><div>Espero haber sido útil, hasta la próxima!</div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-60144621297322838122016-08-19T09:45:00.001-03:002016-08-19T09:45:46.360-03:00WordPress - Query con custom fields anidados<div dir="ltr">El siguiente es un ejemplo de de query combinando dos campos personalizados con una relación AND:<div><br></div><div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> $argsFabrica = array( </font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'post_type' => 'maestro', </font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'meta_key' => 'valor_certi',</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'orderby' => 'meta_value', </font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'order' => ASC,</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'meta_query'<span class="" style="white-space:pre"> </span>=> array(</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'relation' => 'AND',</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> array(</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'key'<span class="" style="white-space:pre"> </span>=> 'tabla_certi',</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'compare'<span class="" style="white-space:pre"> </span>=> '=',</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'value'<span class="" style="white-space:pre"> </span>=> 'FA'</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> ),</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> array(</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'key'<span class="" style="white-space:pre"> </span>=> 'solicitantes_autorizados_certi',</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'compare'<span class="" style="white-space:pre"> </span>=> 'LIKE',</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> 'value'<span class="" style="white-space:pre"> </span>=> get_post_meta( $post_id, 'pedido_titular', true )</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> ),</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"><span class="" style="white-space:pre"> </span> ),</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> );</font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"><br></font></div><div><font face="monospace, monospace" color="#0000ff" style="background-color:rgb(255,255,255)"> <span class="" style="white-space:pre"> </span>$fabricas = get_posts( $argsFabrica );</font></div><div><font color="#0000ff" style="background-color:rgb(255,255,255)"><br></font></div><div><font color="#0000ff" style="background-color:rgb(255,255,255)"><br></font></div><div><br></div></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-15287814161306542612016-06-15T15:23:00.001-03:002016-06-15T15:23:10.159-03:00WordPress: archive page y Custom Post Type UI<div dir="ltr"><b>Escenario</b><div><b><br></b></div><div>Creamos un custom post type (plugin Custom Post Type UI), pero cuando vamos a su página de archivos, encontramos un error 404:</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSogEonEYqvt0_o8zf-lo77fno9bF553jZ5RlHbPrjwLsW3x1IwEB8jRgadiNK8YiVv20uX3OPh-b-1ldecdvFRjnCOv65_t6v3MiInIgFPvpLcelDI72IE36RfJsbwwC3RIi4BixP9VO5/s1600/image-790160.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSogEonEYqvt0_o8zf-lo77fno9bF553jZ5RlHbPrjwLsW3x1IwEB8jRgadiNK8YiVv20uX3OPh-b-1ldecdvFRjnCOv65_t6v3MiInIgFPvpLcelDI72IE36RfJsbwwC3RIi4BixP9VO5/s320/image-790160.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6296486441694393650" /></a><br></div><div><br></div><div>En un primer intento de solución, vamos a la configuración del tipo de contenido y agregamos esta opción:</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcxp-3Gc2DaMMDWatoNJTqD0kFlkUqI7NiPq2BBxPvOHwMydLisXXx6LrYqcQlKDx3awN-vuZKOIACuYe6vyZJ4u7TgE-nrPwMX3Hfb7wA1dIHBmXUYVsXB-N5Y538VsDVnMYlpI309Ux-/s1600/image-791592.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcxp-3Gc2DaMMDWatoNJTqD0kFlkUqI7NiPq2BBxPvOHwMydLisXXx6LrYqcQlKDx3awN-vuZKOIACuYe6vyZJ4u7TgE-nrPwMX3Hfb7wA1dIHBmXUYVsXB-N5Y538VsDVnMYlpI309Ux-/s320/image-791592.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6296486443797146018" /></a><br></div><div><br></div><div>Pero sigue sin funcionar.</div><div><br></div><div>Sólo queda un paso más, ingresar a la opción de enlaces permanentes. No es necesario grabar.</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhFORwJ-KwcAGs0C-5NigROlj-EuIA-95IB0tRs7Fc3f50_nqDK5iXhyphenhyphen8TsDPMM9ZfZVcmAO4pRzvjKfwmawvL75F0VVKE-MQ2nCItRVGz8KOBrnKT5iPCDSPqAAQ5vyeZIsxI3Gme77Lt/s1600/image-792820.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhFORwJ-KwcAGs0C-5NigROlj-EuIA-95IB0tRs7Fc3f50_nqDK5iXhyphenhyphen8TsDPMM9ZfZVcmAO4pRzvjKfwmawvL75F0VVKE-MQ2nCItRVGz8KOBrnKT5iPCDSPqAAQ5vyeZIsxI3Gme77Lt/s320/image-792820.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6296486452378069666" /></a><br></div><div><br></div><div>Con eso queda solucionado el problema.</div><div><br></div><div>Más información en: <a href="https://wordpress.org/support/topic/archive-page-using-cpt-ui-not-created">https://wordpress.org/support/topic/archive-page-using-cpt-ui-not-created</a></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-37743195062217893192016-06-15T11:58:00.001-03:002016-06-15T11:58:13.265-03:00WordPress: ¿Cómo crear un formulario personalizado? - Parte 5 (Adjuntar archivos)<div dir="ltr"><div><span style="color:rgb(102,102,102);font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:20px">En esta quinta parte de esta serie de artículos (ver </span><a href="http://viviendoenlaeradelaweb20.blogspot.com.ar/2016/05/wordpress-como-crear-un-formulario_22.html" style="color:rgb(237,41,42);outline:none;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:20px">parte 4</a><span style="color:rgb(102,102,102);font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:20px">) veremos cómo subir archivos a la librería de medios y adjuntarlos al post que hemos creado. Luego los enviaremos por email.</span><br style="color:rgb(102,102,102);font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:20px"><div style="color:rgb(102,102,102);font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:20px"><br></div><b>Paso 1</b><br><br>Agregamos los tags para subir los archivos:</div><div><br></div><div><div><font color="#0000ff" face="monospace, monospace"> <?php wp_nonce_field( 'archivoAutorizacion', 'archivoAutorizacion_nonce' ); ?></font></div><div><font color="#0000ff" face="monospace, monospace"> <p>Autorización<br/><input type="file" name="archivoAutorizacion" id="archivoAutorizacion" multiple="false" /></p><br/></font></div><div><font color="#0000ff" face="monospace, monospace"> <?php wp_nonce_field( 'archivoContrato', 'archivoContrato_nonce' ); ?></font></div><div><font color="#0000ff" face="monospace, monospace"> <p>Contrato<br/><input type="file" name="archivoContrato" id="archivoContrato" multiple="false" /></p><br/></font></div></div><div><br></div><div><br></div><div>Nuestro formulario se verá así:</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVeuqVOoWErL7HNLmLO8lB3CELQYvg78xMa1zSY9VkpGonTKHXQuztBNTnuwWFciA0fEqk5plg19BwHEDc_4qAQWfFDuaMt_mrHrMw4Vo58BG9DDyiSg8P_zMv9Z-WLzQIQLGej75CQShe/s1600/image-793266.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVeuqVOoWErL7HNLmLO8lB3CELQYvg78xMa1zSY9VkpGonTKHXQuztBNTnuwWFciA0fEqk5plg19BwHEDc_4qAQWfFDuaMt_mrHrMw4Vo58BG9DDyiSg8P_zMv9Z-WLzQIQLGej75CQShe/s320/image-793266.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6296433623892538146" /></a><br></div><div><br></div><div><b>Paso 2</b></div><div><br></div><div>Agregamos el código para subir los dos archivos:</div><div><br></div><div><font color="#0000ff" face="monospace, monospace"><br></font></div><div><div><font color="#0000ff" face="monospace, monospace">if ( isset( $_POST['archivoAutorizacion_nonce'] ) && wp_verify_nonce( $_POST['archivoAutorizacion_nonce'], 'archivoAutorizacion' ) && </font></div><div><font color="#0000ff" face="monospace, monospace"> isset( $_POST['archivoContrato_nonce'] ) && wp_verify_nonce( $_POST['archivoContrato_nonce'], 'archivoContrato' ) ) {</font></div><div><font color="#0000ff" face="monospace, monospace"> <span class="" style="white-space:pre"> </span></font></div><div><span style="color:rgb(0,0,255);font-family:monospace,monospace;white-space:pre"> </span><font color="#0000ff" face="monospace, monospace">require_once( ABSPATH . 'wp-admin/includes/image.php' );</font></div><div><span style="color:rgb(0,0,255);font-family:monospace,monospace;white-space:pre"> </span><font color="#0000ff" face="monospace, monospace">require_once( ABSPATH . 'wp-admin/includes/file.php' );</font></div><div><font color="#0000ff" face="monospace, monospace"><span style="white-space:pre"> </span>require_once( ABSPATH . 'wp-admin/includes/media.php' );</font></div><div><font color="#0000ff" face="monospace, monospace"> </font></div><div><font color="#0000ff" face="monospace, monospace"> $attachmentAutorizacion_id = media_handle_upload( 'archivoAutorizacion', $post_id );</font></div><div><font color="#0000ff" face="monospace, monospace"> if ( is_wp_error( $attachmentAutorizacion_id ) ) {</font></div><div><font color="#0000ff" face="monospace, monospace"> <span class="" style="white-space:pre"> </span>autorizacion_response("ERROR", "No se ha podido cargar al archivo de autorización: <br/><br/>" . $attachmentAutorizacion_id->get_error_message());</font></div><div><font color="#0000ff" face="monospace, monospace"> } </font></div><div><font color="#0000ff" face="monospace, monospace"> </font></div><div><font color="#0000ff" face="monospace, monospace"> else {</font></div><div><font color="#0000ff" face="monospace, monospace"><br></font></div><div><font color="#0000ff" face="monospace, monospace"> $attachmentContrato_id = media_handle_upload( 'archivoContrato', $post_id );</font></div><div><font color="#0000ff" face="monospace, monospace"> if ( is_wp_error( $attachmentContrato_id ) ) {</font></div><div><font color="#0000ff" face="monospace, monospace"> autorizacion_response("ERROR", "No se ha podido cargar al archivo de contrato: <br/><br/>" . $attachmentContrato_id->get_error_message());</font></div><div><font color="#0000ff" face="monospace, monospace"> } </font></div><div><font color="#0000ff" face="monospace, monospace"> </font></div></div><div><br></div><div><b>Paso 3</b></div><div><br></div><div>Código para enviar los archivos por email.</div><div><br></div><div><div><font color="#0000ff" face="monospace, monospace"> $adjunto1 = ABSPATH . parse_url(wp_get_attachment_url($attachmentAutorizacion_id))['path'];</font></div><div><font color="#0000ff" face="monospace, monospace"> $adjunto1 = str_replace("//", "/",$adjunto1);</font></div><div><font color="#0000ff" face="monospace, monospace"> </font></div><div><font color="#0000ff" face="monospace, monospace"> $adjunto2 = ABSPATH . parse_url(wp_get_attachment_url($attachmentContrato_id))['path'];</font></div><div><font color="#0000ff" face="monospace, monospace"> $adjunto2 = str_replace("//", "/",$adjunto2);</font></div><div><font color="#0000ff" face="monospace, monospace"> </font></div><div><font color="#0000ff" face="monospace, monospace"> $adjuntos = array($adjunto1, $adjunto2);</font></div><div><font color="#0000ff" face="monospace, monospace"> </font></div><div><font color="#0000ff" face="monospace, monospace"> $sent = wp_mail($to, utf8_decode($subject), $message, $cabeceras, $adjuntos);</font></div></div><div><br></div><div><br></div><div><br></div><b>Posibles errores</b><div><b><br></b></div><div><span style="color:rgb(255,0,0);font-family:"Segoe UI","Lucida Sans Unicode","Lucida Grande",sans-serif;font-size:14px;line-height:17.5px">File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.</span><b><br></b></div><div><b><br></b></div><div>Este error puede darse cuando omitimos especificar <span style="color:rgb(0,0,0);font-family:Consolas,Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.3em;white-space:pre-wrap;background-color:rgb(243,243,247)">enctype="multipart/form-data" </span>en el tag FORM:</div><div><br></div><div><font face="monospace, monospace" color="#0000ff"><form class="form_certi" id="nueva_autorizacion" <b>enctype="multipart/form-data"</b> action="<?php the_permalink(); ?>" method="post"><br></font></div><div><br></div><div><br></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com2tag:blogger.com,1999:blog-6128002887567080809.post-76741588244122490162016-06-10T10:06:00.001-03:002016-06-10T10:06:06.607-03:00WordPress: ¿Cómo modificar el mensaje de código incorrecto Really Simple CAPTCHA?<div dir="ltr"><b>Escenario:</b><div><br>- Really Simple CAPTCHA 1.9<br>- Contact Form 7 4.4.2<br><br>Mensaje de error:<br>"Your entered code is incorrect"<div><br></div><div>No encontramos lugar donde modificarlo. No hay traducción posible.</div></div><div><br></div><div><b>Solución</b></div><div><b><br></b></div><div>Agregar en functions.php este filtro:</div><div><br></div><div><span style="color:rgb(0,0,0);font-family:Consolas,Monaco,'Courier New',Courier,monospace;font-size:13px;line-height:22px">add_filter ('wpcf7_use_really_simple_captcha', '__return_true');</span><br></div><div><br></div><div><b>Resultado</b></div><div><b><br></b></div><div><b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ41as405_6e3D2IGwfzXaPeNTrMrbOCgx3UFUZpTg2RoMKV7b7xOnjOzF8-pv10GK5NNgupeRZ-ArGiAVfUv-WTHwWyvLec1D2LXdvR5i5gzzGpNIIdbmvtleVVMQ_iWaf-nM64ERmyh6/s1600/image-766608.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ41as405_6e3D2IGwfzXaPeNTrMrbOCgx3UFUZpTg2RoMKV7b7xOnjOzF8-pv10GK5NNgupeRZ-ArGiAVfUv-WTHwWyvLec1D2LXdvR5i5gzzGpNIIdbmvtleVVMQ_iWaf-nM64ERmyh6/s320/image-766608.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6294549308308229890" /></a><br></b></div><div><b><br></b></div><div><b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZe8AwzWPiHOooPWnAtsvRumFG_uYNpzA42EcpLCEyGjG6pM2qIsLWZ9u0sIO4DnE1fJ8T04LpHz4KTzM9HYPxbqRAkXkPYwSansJD-aOPKaHfbEwiyIYw1gvHHPX3ItHAyGpbe0sdgQD0/s1600/image-767746.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZe8AwzWPiHOooPWnAtsvRumFG_uYNpzA42EcpLCEyGjG6pM2qIsLWZ9u0sIO4DnE1fJ8T04LpHz4KTzM9HYPxbqRAkXkPYwSansJD-aOPKaHfbEwiyIYw1gvHHPX3ItHAyGpbe0sdgQD0/s320/image-767746.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6294549315277704226" /></a><br></b></div><div><br></div><div><b>Fuentes</b></div><div><br></div><div><a href="https://wordpress.org/support/topic/captcha-code-error-traslation?replies=7">https://wordpress.org/support/topic/captcha-code-error-traslation?replies=7</a><br></div><div><a href="http://contactform7.com/2015/09/17/contact-form-7-43/">http://contactform7.com/2015/09/17/contact-form-7-43/</a><br></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-17889291974446440312016-06-02T11:51:00.001-03:002016-06-02T11:51:14.978-03:00WordPress - Mostrar datos del clima con nuestros propios estilos<div dir="ltr">En este breve artículo contaré como mostrar datos del clima en nuestro sitio de WordPress usando estilos personalizados. El objetivo es mostrar la temperatura y un icono arriba a la derecha como se ve en esta imagen:<div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyWB9tNvtQe3EUzM59_4dBpjkq6z1zbaB72EXjF8wBuptlAZk3M9EqMpFc6yYPyxPR5C9LSMn__mbpqGlteFcg55qdxIQp5jV-VpDRk56EgDt-hQV6EExYLasJ22ZPqKBFsoO7uEh7y3jI/s1600/image-774979.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyWB9tNvtQe3EUzM59_4dBpjkq6z1zbaB72EXjF8wBuptlAZk3M9EqMpFc6yYPyxPR5C9LSMn__mbpqGlteFcg55qdxIQp5jV-VpDRk56EgDt-hQV6EExYLasJ22ZPqKBFsoO7uEh7y3jI/s320/image-774979.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6291607723918706610" /></a><br><div><br></div><div><b>Paso 1 - Plugin</b></div></div><div><b><br></b></div><div>Instalamos el plugin Weather Underground. No requiere KEY.</div><div><br></div><div><a href="https://es.wordpress.org/plugins/wunderground/">https://es.wordpress.org/plugins/wunderground/</a><br></div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Qi0LAvyi3kG9IOIrslsPm-8PUDZfZilziXRCP0ckuooYWJaUdngwjtPk9f_hUJfrjYN376gcikaGY7Z3SpFrp1BLdDaG_itf0nW1ZHyBkfj_a2RmSQ6v6xzHxi4P3UBmmFyUJwmYKbqo/s1600/image-776304.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Qi0LAvyi3kG9IOIrslsPm-8PUDZfZilziXRCP0ckuooYWJaUdngwjtPk9f_hUJfrjYN376gcikaGY7Z3SpFrp1BLdDaG_itf0nW1ZHyBkfj_a2RmSQ6v6xzHxi4P3UBmmFyUJwmYKbqo/s320/image-776304.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6291607726028124226" /></a><br></div><div><br></div><div><br></div><div><b>Paso 2 - Shortcode</b></div><div><b><br></b></div><div>Agregamos el shortcode en la página en donde queremos mostrarlo, en mi caso header.php.</div><div><br></div><div>El código que utilicé es:</div><div><br></div><div><div><font face="monospace, monospace" color="#ff0000"> <div class="pp_header_boton_clima pp_bk_azul"></font></div><div><font face="monospace, monospace" color="#ff0000"> <?php</font></div><div><font face="monospace, monospace" color="#ff0000"><span class="" style="white-space:pre"> </span> echo "<a href='<a href="https://espanol.wunderground.com/q/locid:ARSF2148;loctype:1?MR=1">https://espanol.wunderground.com/q/locid:ARSF2148;loctype:1?MR=1</a>' target='_blank'>" . do_shortcode ( '[wunderground location="-32.30,-61.41" layout="current" measurement="c"]') . "</a>";</font></div><div><font face="monospace, monospace" color="#ff0000"> ?></font></div><div><font face="monospace, monospace" color="#ff0000"> </div> </font></div></div><div><br></div><div>Para ver las opciones del shortcode, ir a:</div><div><a href="https://github.com/katzwebservices/Wunderground">https://github.com/katzwebservices/Wunderground</a><br></div><div><br></div><div><br></div><div><b>Paso 3 - Estilos</b></div><div><b><br></b></div><div>Lo más probable es que los estilos originales no sirvan, con lo cual este plugin nos permite modificarlos, para lo cual seguimos estos pasos.</div><div><br></div><div>Primero creamos un directorio dentro de nuestro tema llamado "wunderground"</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyv5vEk9iwpYDtvBBqSRTG7x-q8qeP53WctjVzLCyKt2lH8RPo8e81XnfcxkOnUJqckX_iEv9rblW9UPGPmmRIICmxpzSFwQVS-5mJsL9BTOUO0EUwOpd_Di2-8MxEKwEzNF0rVzSWWh-4/s1600/image-777195.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyv5vEk9iwpYDtvBBqSRTG7x-q8qeP53WctjVzLCyKt2lH8RPo8e81XnfcxkOnUJqckX_iEv9rblW9UPGPmmRIICmxpzSFwQVS-5mJsL9BTOUO0EUwOpd_Di2-8MxEKwEzNF0rVzSWWh-4/s320/image-777195.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6291607731436967618" /></a><br></div><div><br></div><div>Luego copiamos dentro de ese directorio el template original. En mi caso modifiqué el llamado CURRENT:</div><div><br></div><div>Carpeta origen: o/wp-content/plugins/wunderground/templates</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJry5zUcx9I3GHBjxPuvKib3_HBZN3PVOdz4xvcZjgnYmPC7wTv0Vpwrx5TJnCTTtRDOcyowwmxQD8Sh2O8xA8otEDtxTTONe0vUmsYJKfXohiybMd93H8DsIjk5UppY4y-pjtHH-66Pxj/s1600/image-778084.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJry5zUcx9I3GHBjxPuvKib3_HBZN3PVOdz4xvcZjgnYmPC7wTv0Vpwrx5TJnCTTtRDOcyowwmxQD8Sh2O8xA8otEDtxTTONe0vUmsYJKfXohiybMd93H8DsIjk5UppY4y-pjtHH-66Pxj/s320/image-778084.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6291607734056430834" /></a><br></div><div><br></div><div>Y luego simplemente editamos el código dentro de ese template. En mi caso utilicé este código:</div><div><font face="monospace, monospace" color="#ff0000"><br></font></div><div><div><font face="monospace, monospace" color="#ff0000">{% autoescape 'html' %}</font></div><div><font face="monospace, monospace" color="#ff0000"><div class="pp_servicio_clima"></font></div><div><font face="monospace, monospace" color="#ff0000"><span class="" style="white-space:pre"> </span>{% set day = wunderground.current_observation %}</font></div><div><font face="monospace, monospace" color="#ff0000"> <span class="" style="white-space:pre"> </span><div class="pp_servicio_clima_temperatura"></font></div><div><font face="monospace, monospace" color="#ff0000"><span class="" style="white-space:pre"> </span><span>{{ day.temperature|round }}<sup>&deg;</sup></span></font></div><div><font face="monospace, monospace" color="#ff0000"><span class="" style="white-space:pre"> </span><small>{% if wunderground.response.units == 'english' %}F{% else %}C{% endif %}</small></font></div><div><font face="monospace, monospace" color="#ff0000"> <span class="" style="white-space:pre"> </span></div></font></div><div><font face="monospace, monospace" color="#ff0000"> <span class="" style="white-space:pre"> </span>{% include 'snippets/icon.html' with { 'tag' : 'div', 'iconsize' : '100' } %}</font></div><div><font face="monospace, monospace" color="#ff0000"></div></font></div><div><font face="monospace, monospace" color="#ff0000">{% endautoescape %}</font></div></div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNsOz7ccdS1_CpYqi2iLehysMA3ag-3QEbqnPYYCv2sTUfDgSV1_DXAyrJJJEjqZ72ogTuraT7OsSuSWgS6El9pITpnUFqvw8XcnYxhQ50wZsbKfRFY1mF5y1IhSQhdGtnNeJfZr7FTxSg/s1600/image-778923.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNsOz7ccdS1_CpYqi2iLehysMA3ag-3QEbqnPYYCv2sTUfDgSV1_DXAyrJJJEjqZ72ogTuraT7OsSuSWgS6El9pITpnUFqvw8XcnYxhQ50wZsbKfRFY1mF5y1IhSQhdGtnNeJfZr7FTxSg/s320/image-778923.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6291607741183328642" /></a><br></div><div><br></div><div><b>Paso 4 - Estilos</b></div><div><b><br></b></div><div>Esto ya queda a criterio de cada uno, sólo tenemos que ir a nuestra hoja de estilos y adaptarlo al diseño de nuestro sitio.</div><div><br></div><div>Muestro sólo a título ilustrativo:</div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWSLm-YwyhgIo-AW8QI6jXh3S2eW1U2BKD2YXV4xXQoyVgjzrZfCbZH06oaimil5JlckfJ6vp1HQW_lTBh4qGupQ1kuV_kZinwO8pe7m7n04efc_ubCeAC5Awd_O6RJINqb496H-dkEDQt/s1600/image-779784.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWSLm-YwyhgIo-AW8QI6jXh3S2eW1U2BKD2YXV4xXQoyVgjzrZfCbZH06oaimil5JlckfJ6vp1HQW_lTBh4qGupQ1kuV_kZinwO8pe7m7n04efc_ubCeAC5Awd_O6RJINqb496H-dkEDQt/s320/image-779784.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6291607742402554114" /></a><br></div><div><br></div><div>Eso es todo por hoy. Hasta la próxima!</div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-58332061726284460672016-05-31T16:23:00.001-03:002016-05-31T16:23:48.389-03:00WordPress - Retornar posts en base a un criterio (get_posts)<div dir="ltr">En ese breve ejemplo mostraremos como:<div><ul><li>Realizar una consulta de registros de un post type</li><li>Especificando filtro y orden</li><li>Y cantidad de registros</li></ul><div>El resultado es mostrar la información dentro de un bloque HTML en nuestra página de inicio tal como se ve en esta imagen:</div></div><div><br></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7JFsKcAaC0j-CzfHdHZo1Ar_UaoUdfa1wEevLhMhfBRDr01mOrSlkbS8AbG2KRyVwJpePc21R8ed7EUM0Yfu2HlV9g-lvLLSBGIeTm0wnaMCW4qty_SRjvELPtbwftvCCEYGHQgBUN-UD/s1600/image-728391.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7JFsKcAaC0j-CzfHdHZo1Ar_UaoUdfa1wEevLhMhfBRDr01mOrSlkbS8AbG2KRyVwJpePc21R8ed7EUM0Yfu2HlV9g-lvLLSBGIeTm0wnaMCW4qty_SRjvELPtbwftvCCEYGHQgBUN-UD/s320/image-728391.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6290935787227746898" /></a><br></div><div><br></div><div>El código:</div><div><br></div><div><div><font face="monospace, monospace" color="#ff0000"> <?php</font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"> <span style="white-space:pre"> </span>$hoy = date("Ymd"); </font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"> $args = array( </font></div><div><font face="monospace, monospace" color="#ff0000"> 'numberposts' => 3,</font></div><div><font face="monospace, monospace" color="#ff0000"> 'post_type' => 'evento', </font></div><div><font face="monospace, monospace" color="#ff0000"> 'meta_key' => 'fecha_evento',</font></div><div><font face="monospace, monospace" color="#ff0000"> 'orderby' => 'meta_value', </font></div><div><font face="monospace, monospace" color="#ff0000"> 'order' => ASC,</font></div><div><font face="monospace, monospace" color="#ff0000"> 'meta_query'<span class="" style="white-space:pre"> </span>=> array(</font></div><div><font face="monospace, monospace" color="#ff0000"> 'key'<span class="" style="white-space:pre"> </span>=> 'fecha_evento',</font></div><div><font face="monospace, monospace" color="#ff0000"> 'compare'<span class="" style="white-space:pre"> </span>=> '>=',</font></div><div><font face="monospace, monospace" color="#ff0000"> 'value'<span class="" style="white-space:pre"> </span>=> $hoy</font></div><div><font face="monospace, monospace" color="#ff0000"><span class="" style="white-space:pre"> </span> )</font></div><div><font face="monospace, monospace" color="#ff0000"> );</font></div><div><font face="monospace, monospace" color="#ff0000"> $eventos = get_posts( $args );</font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"> foreach ( $eventos as $evento ) {</font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"> $titulo = $evento->post_title;</font></div><div><font face="monospace, monospace" color="#ff0000"> if ( strlen($titulo) >20 ) {</font></div><div><font face="monospace, monospace" color="#ff0000"> $titulo = substr($titulo, 0, 20) . ' ...';</font></div><div><font face="monospace, monospace" color="#ff0000"> }</font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"> $fecha = get_post_meta($evento->ID,'fecha_evento',true);</font></div><div><font face="monospace, monospace" color="#ff0000"> $mes = substr($fecha, 4, 2);</font></div><div><font face="monospace, monospace" color="#ff0000"> $dia = substr($fecha, 6, 2);</font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"> echo '<a href="' . get_permalink($evento->ID) . '">' . $dia . "/" . $mes . " " . $titulo . '</a><br/>';</font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"> }</font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"><span style="white-space:pre"> </span>wp_reset_postdata();</font></div><div><font face="monospace, monospace" color="#ff0000"> </font></div><div><font face="monospace, monospace" color="#ff0000"> ?></font></div></div><div><br></div></div> jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-74097422374040103032016-05-01T16:02:00.001-03:002016-06-15T11:59:18.909-03:00WordPress: ¿Cómo crear un formulario personalizado? - Parte 4 (Guardar datos)<div dir="ltr">
En esta cuarta parte de esta serie de artículos (ver <a href="http://viviendoenlaeradelaweb20.blogspot.com.ar/2016/05/wordpress-como-crear-un-formulario_94.html">parte 3</a>) veremos cómo almacenar los datos de nuestro formulario en un tipo de artículo personalizado (custom post type) dentro de la base de datos de WordPress. Por supuesto no accederemos en forma directa a la base, sin a través de la API.<br />
<div>
<br /></div>
<div>
<b>Paso 1</b></div>
<div>
<b><br /></b></div>
<div>
Creamos un custom post type:</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzc5CMUZ8TNMwwXgbEBsnQ5QrwVKHZ7FdHDgTdgzVMStWhv7OmUuLpYGsPLzvM0lbONt4AkwngFTFFSXk0MHGsY1ksa56XRj3M1uSK9YCBuDWlyGi7CV2JyRdQWjMyS27vc1h8kJV__eRd/s1600/image-724245.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279797634165199122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzc5CMUZ8TNMwwXgbEBsnQ5QrwVKHZ7FdHDgTdgzVMStWhv7OmUuLpYGsPLzvM0lbONt4AkwngFTFFSXk0MHGsY1ksa56XRj3M1uSK9YCBuDWlyGi7CV2JyRdQWjMyS27vc1h8kJV__eRd/s320/image-724245.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Paso 2</b></div>
<div>
<b><br /></b></div>
<div>
Agregamos el código para insertar dentro de WordPress y controlar el posible error.</div>
<div>
<br /></div>
<div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><?php</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;">$response = "<h1>Solicitar autorización</h1><br/>";</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;">if ($_SERVER['REQUEST_METHOD'] == 'POST') {</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> # Datos</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> $to = get_option('admin_email');</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><span style="white-space: pre;"> </span>$subject = "Solicitud de autorización desde ".get_bloginfo('name');</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> $message = "<b>Empresa</b>: " . $_POST['razonsocial'];</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> $message .= "<br/><b>Email</b>: " . $_POST['email'];</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> $cabeceras = "MIME-Version: 1.0\r\n";</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> $cabeceras .= "Content-Type: text/html; charset=ISO-8859-1\r\n";</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b> # Carga de post en WodPress</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b> $my_post = array(</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b><span class="" style="white-space: pre;"> </span> 'post_title' => $subject,</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b><span class="" style="white-space: pre;"> </span> 'post_content' => $message,</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b><span class="" style="white-space: pre;"> </span> 'post_status' => 'publish',</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b><span class="" style="white-space: pre;"> </span> 'post_type' => 'solicitud',</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b><span class="" style="white-space: pre;"> </span>);</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b> $post_id = wp_insert_post( $my_post , true);</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b> if ( is_wp_error($post_id) ) {</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b> <span class="" style="white-space: pre;"> </span>autorizacion_response("ERROR", "No se ha podido cargar la solicitud: <br/><br/>" . $post_id->get_error_message());</b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><span class="" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> # Envío de mail</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> else {</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> $subject .= " - " . $post_id;</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> $sent = wp_mail($to, utf8_decode($subject), $message, $cabeceras);</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><span class="" style="white-space: pre;"> </span>if($sent) </span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> <span class="" style="white-space: pre;"> </span>autorizacion_response("OK", "Solicitud de autorización enviada.");</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><span class="" style="white-space: pre;"> </span>else </span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> <span class="" style="white-space: pre;"> </span>autorizacion_response("ERROR", "No se ha podido enviar el correo electrónico: <br/><br/>" . error_get_last()["message"]);</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> }</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> <span class="" style="white-space: pre;"> </span></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> }</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;">function autorizacion_response($tipo, $mensaje){</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> global $response;</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> $response = "<div class='mensaje{$tipo}'>{$mensaje}</div><br/>";</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"> }</span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;">?></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;"><b><?php get_header(); </b></span></div>
<div>
<span style="color: blue; font-family: monospace , monospace;">/*</span></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>El resultado</b></div>
<div>
<br /></div>
<div>
Sin error:</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXsQj-NUWgpUvaFHMH3Ix5RwhmfegLLloSxP4DCKshto9WU2a_XCxnAnS0y7W5LHI-B4b7ScIkshSJD447Pgc9kHJgeqvHhPBJBYbQeVytuERuYN3eUO8hqXHBr3nitfsqj0U-qiE4HvkX/s1600/image-726162.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279797645149211362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXsQj-NUWgpUvaFHMH3Ix5RwhmfegLLloSxP4DCKshto9WU2a_XCxnAnS0y7W5LHI-B4b7ScIkshSJD447Pgc9kHJgeqvHhPBJBYbQeVytuERuYN3eUO8hqXHBr3nitfsqj0U-qiE4HvkX/s320/image-726162.png" /></a></div>
<div>
<br /></div>
<div>
Con error:</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyPTUiK65q8GKMtZzZMoHq2RF3H_Yw6DTJGUn9bcNMUDFw9JrkeybXOvx0YN7GjGXR1MzfW4JVTNiLEi2z6uJsJsawlRgNRPS_GNoG86IovAzusAHNAs7EWFK1e2oDzB9IgZtfoeTMEZ-L/s1600/image-728002.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279797649552245746" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyPTUiK65q8GKMtZzZMoHq2RF3H_Yw6DTJGUn9bcNMUDFw9JrkeybXOvx0YN7GjGXR1MzfW4JVTNiLEi2z6uJsJsawlRgNRPS_GNoG86IovAzusAHNAs7EWFK1e2oDzB9IgZtfoeTMEZ-L/s320/image-728002.png" /></a></div>
<div>
<br /></div>
<div>
El post creado:</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9PNmwLqbppOf0CtctX8J41O6JV3Ew783FaS87Elo3mafF-E9gwhwOoCNIdBQR5uXzeJ0oJdqu2N2D4Z3a1A7iwVvxKVbDUZBaeSkvZpK4RHoWGPF8muR1ESLeFLWy79KCwRXnxLLcPYs8/s1600/image-729735.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279797657708983714" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9PNmwLqbppOf0CtctX8J41O6JV3Ew783FaS87Elo3mafF-E9gwhwOoCNIdBQR5uXzeJ0oJdqu2N2D4Z3a1A7iwVvxKVbDUZBaeSkvZpK4RHoWGPF8muR1ESLeFLWy79KCwRXnxLLcPYs8/s320/image-729735.png" /></a></div>
<div>
<br /></div>
<div>
El mail recibido</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDzmCC31NDyaLqIh2Qj9SYEuOvlHuWhlQnJLhelj_2FCF9qkLcvbGsRxZbJBdJgziVw1BHoRzLSfwMCEI_rFOy3tVxjugFrmF_ixs2RmJwELEfpnFcgou1GEJoR-omLnDH-7VfuaXoT4GD/s1600/image-731723.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279797667240751010" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDzmCC31NDyaLqIh2Qj9SYEuOvlHuWhlQnJLhelj_2FCF9qkLcvbGsRxZbJBdJgziVw1BHoRzLSfwMCEI_rFOy3tVxjugFrmF_ixs2RmJwELEfpnFcgou1GEJoR-omLnDH-7VfuaXoT4GD/s320/image-731723.png" /></a><br />
<br />
Ir a <a href="http://viviendoenlaeradelaweb20.blogspot.com.ar/2016/06/wordpress-como-crear-un-formulario.html">Parte 5</a>.</div>
</div>
jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-51005028998793847432016-05-01T13:31:00.001-03:002016-05-01T16:02:47.367-03:00WordPress: ¿Cómo crear un formulario personalizado? - Parte 3 (Submit)<div dir="ltr">
En esta tercera parte (ver <a href="http://viviendoenlaeradelaweb20.blogspot.com.ar/2016/05/wordpress-como-crear-un-formulario_1.html">parte 2</a>) vamos a describir cómo enviar el formulario y enviar un email.<br />
<div>
<br /></div>
<div>
<b>Paso 1</b></div>
<div>
<b><br /></b></div>
<div>
Agregamos una sección en donde describir el resultado del procesamiento</div>
<div>
<br /></div>
<div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><?php the_content(); ?></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><b><span class="" style="white-space: pre;"> </span><?php echo $response; ?></b></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> <form id="nueva_autorizacion" action="<?php the_permalink(); ?>" method="post"></span></div>
<div>
<br /></div>
</div>
<div>
Se verá así:</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJpkl4fEHomfu2nEdE4V9ZdtXRzneTXwb4HjfUQMx6w9ABEsOqSDcX_y8dXnd8YT8AJddd3Mi_vFXH2JhxLPTBJjbvGZGCCYrY2ekFXAZy6_apAZS9C4_xUUMvgZFyJCFvGqtwArKw9qCv/s1600/image-700139.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279758876761622450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJpkl4fEHomfu2nEdE4V9ZdtXRzneTXwb4HjfUQMx6w9ABEsOqSDcX_y8dXnd8YT8AJddd3Mi_vFXH2JhxLPTBJjbvGZGCCYrY2ekFXAZy6_apAZS9C4_xUUMvgZFyJCFvGqtwArKw9qCv/s320/image-700139.png" /></a></div>
<div>
<br /></div>
<div>
Para ello agregamos los siguientes estilos:</div>
<div>
<br /></div>
<div>
<div>
<span style="color: blue; font-family: monospace, monospace;">.mensajeERROR{</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> padding: 5px 9px;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> border: 1px solid red;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> color: red;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> border-radius: 3px;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> }</span></div>
<div>
</div>
<div>
<span style="color: blue; font-family: monospace, monospace;">.mensajeOK{</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> padding: 5px 9px;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> border: 1px solid green;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> color: green;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> border-radius: 3px;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> }</span></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Paso 2</b></div>
<div>
<b><br /></b></div>
<div>
Al inicio de nuestra página agregamos el código para enviar el formulario:</div>
<div>
<br /></div>
<div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><?php</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;">$response = "<h1>Solicitar autorización</h1><br/>";</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;">if ($_SERVER['REQUEST_METHOD'] == 'POST') {</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> # Envío de email</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> $to = get_option('admin_email');</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><span class="" style="white-space: pre;"> </span>$subject = "Solicitud de autorización desde ".get_bloginfo('name');</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> $message = "Solicito autorización de acceso a la empresa " . $_POST['razonsocial'];</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> $sent = wp_mail($to, $subject, strip_tags($message));</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><span class="" style="white-space: pre;"> </span>if($sent) </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> autorizacion_response("OK", "Solicitud de autorización enviada.");</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><span class="" style="white-space: pre;"> </span>else </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> autorizacion_response("ERROR", "No se ha podido enviar el correo electrónico: <br/><br/>" . error_get_last()["message"]);</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> <span class="" style="white-space: pre;"> </span></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> }</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;">function autorizacion_response($tipo, $mensaje){</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> global $response;</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> $response = "<div class='mensaje{$tipo}'>{$mensaje}</div><br/>";</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> }</span></div>
<div>
<br /></div>
<div>
<span style="color: blue; font-family: monospace, monospace;">?></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><b><?php get_header(); </b></span></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Y finalmente nuestro mensaje ha sido enviado:</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPBnua8528QPLdDRSQhNpntZK2kMen-ls4BxuFWNrByP-9lzf_KuglpVCgue4sSfyeLgg3Ry_TBOXGK6lfLfKGIP6PUeJ4mfvigSCF3vS0xMcdxJLvBCn7s3BmftOkk8MDJFT6Qqw3vASc/s1600/image-702322.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279758888454138018" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPBnua8528QPLdDRSQhNpntZK2kMen-ls4BxuFWNrByP-9lzf_KuglpVCgue4sSfyeLgg3Ry_TBOXGK6lfLfKGIP6PUeJ4mfvigSCF3vS0xMcdxJLvBCn7s3BmftOkk8MDJFT6Qqw3vASc/s320/image-702322.png" /></a><br />
<br />
Ir a <a href="http://viviendoenlaeradelaweb20.blogspot.com.ar/2016/05/wordpress-como-crear-un-formulario_22.html">parte 4</a>.</div>
</div>
jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0tag:blogger.com,1999:blog-6128002887567080809.post-65206962836326892192016-05-01T12:12:00.001-03:002016-05-01T13:32:36.625-03:00WordPress: ¿Cómo crear un formulario personalizado? - Parte 2 (Validación)<div dir="ltr">
En esta segunda parte (ver <a href="http://viviendoenlaeradelaweb20.blogspot.com.ar/2016/05/wordpress-como-crear-un-formulario.html">parte 1</a>) veremos cómo agregar validaciones de campos utilizando jQuery.<br />
<div>
<br /></div>
<div>
<b>Paso 1</b></div>
<div>
<br /></div>
<div>
Agregamos la referencia a jQuery Validator: <a href="https://jqueryvalidation.org/">https://jqueryvalidation.org/</a></div>
<div>
<br /></div>
<div>
Para ello agregamos este código en funtions.php:</div>
<div>
<br /></div>
<div>
<div>
<span style="color: blue; font-family: monospace, monospace;">function add_jQuery_Validation() {</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> wp_register_script('jquery-validation-plugin', '<a href="http://cdn.jsdelivr.net/jquery.validation/1.15.0/jquery.validate.min.js">http://cdn.jsdelivr.net/jquery.validation/1.15.0/jquery.validate.min.js</a>', array('jquery'));</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> wp_enqueue_script('jquery-validation-plugin');</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;">} </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;">add_action('wp_enqueue_scripts', "add_jQuery_Validation");</span></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Paso 2</b></div>
<div>
<br /></div>
<div>
Creamos el formulario con los campos usando la función esc_attr:</div>
<div>
<br /></div>
<div>
<a href="https://developer.wordpress.org/reference/functions/esc_attr/">https://developer.wordpress.org/reference/functions/esc_attr/</a></div>
<div>
<br /></div>
<div>
El formulario se inserta luego de the_content. Esto puede variar según el tema:</div>
<div>
<br /></div>
<div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><?php <b>the_content()</b>; ?></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> <form id="nueva_autorizacion" action="<?php the_permalink(); ?>" method="post"></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> <p>Razón Social: <input type="text" name="razonsocial" value="<?php echo esc_attr($_POST['razonsocial']); ?>" /></p><br/></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> <p>Correo electrónico: <input type="text" name="email" value="<?php echo esc_attr($_POST['email']); ?>"/></p><br/></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> <p><input type="submit" value="Solicitar autorización"></p></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </form></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD3oJdlfbz9Mtq7qKCXhpwLzktwEZlglc1IlaP863jZHHwvM0KUGM_gPrDab37PJp8-qJpzy3er1dIUClPi_5b0lEL4eOOT79_5gU2_u4QNB6pQXDuP_WCtVIfF_H24sR6n-FtTP5SoDXX/s1600/image-761311.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279738517536821346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD3oJdlfbz9Mtq7qKCXhpwLzktwEZlglc1IlaP863jZHHwvM0KUGM_gPrDab37PJp8-qJpzy3er1dIUClPi_5b0lEL4eOOT79_5gU2_u4QNB6pQXDuP_WCtVIfF_H24sR6n-FtTP5SoDXX/s320/image-761311.png" /></a></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<br /></div>
<div>
<b>Paso 3</b></div>
</div>
<div>
<br /></div>
<div>
Agregamos en la misma página el script de validación:</div>
<div>
<br /></div>
<div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><script type="text/javascript"></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;">(function($){</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> $('#nueva_autorizacion').validate({</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> rules: {</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> 'razonsocial': {</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> required: true</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> },</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> 'email': {</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> required: true,</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><span class="" style="white-space: pre;"> </span>email: true</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> }</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> },</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"><br /></span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> messages: {</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> 'razonsocial': " Campo requerido.",</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> 'email': " Correo electrónico no válido."</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> }</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> });</span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;">})(jQuery);</span></div>
<div>
<span style="color: rgb(0 , 0 , 255); font-family: monospace , monospace;"> </span></div>
<div>
<span style="color: blue; font-family: monospace, monospace;"></script></span></div>
</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDjY_fvYqYRv8mcqCsLu9e0K6r3cjyFk09Du11iJiWJ65FCBZnniWWZNxys-ZT_FtNdoeszOHKUnQUnTkvwsiQSIVUL_mJ_VgDtMA87bmciquh9PcDzyiTHSSBCMP7ZQ1OeTT2LRB2OVOI/s1600/image-762792.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279738529249815058" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDjY_fvYqYRv8mcqCsLu9e0K6r3cjyFk09Du11iJiWJ65FCBZnniWWZNxys-ZT_FtNdoeszOHKUnQUnTkvwsiQSIVUL_mJ_VgDtMA87bmciquh9PcDzyiTHSSBCMP7ZQ1OeTT2LRB2OVOI/s320/image-762792.png" /></a><br />
<br />
Ir a <a href="http://viviendoenlaeradelaweb20.blogspot.com.ar/2016/05/wordpress-como-crear-un-formulario_94.html">Parte 3</a>.</div>
</div>
jpussacqhttp://www.blogger.com/profile/16696117890560599187noreply@blogger.com0