Sangría (tabulación) WP_head

2

En este momento, todas las cosas que se incluyen en wp_head están justificadas a la izquierda en la vista de código.

Mientras que todo mi otro código que está alrededor de wp_head está sangrado (tabulado) dos veces. ¿Es posible agregar una sangría / tabulaciones a toda la información de wp_head?

Gracias

    
pregunta mr. x 30.10.2012 - 00:46

5 respuestas

2

Técnicamente es posible, pero probablemente no valga la pena el esfuerzo (y los gastos generales). Si inspecciona la fuente con algo como Developer Tools en Chrome, su HTML se sangrará automáticamente. De hecho, algunos complementos de almacenamiento en caché (como W3 Total Cache) incluso eliminan todos los espacios en blanco para mejorar los tiempos de carga de la página.

Dicho esto, si quieres asegurarte de que el contenido de wp_head esté sangrado, deberías hacer lo siguiente:

  1. Agregue una función a get_header que se ejecuta en último lugar. Esta función obtiene todas las funciones asociadas a wp_head (usando $wp_filter['wp_head'] ), elimínelas y vuelva a vincularlas a su propia acción personalizada ( my_wp_head por ejemplo).
  2. Una función personalizada ( my_wp_head() for example ) debería adjuntarse a wp_head
  3. En la función my_wp_head() , querrías
    1. Cree una matriz de patrones de expresiones regulares de coincidencia / reemplazo ( $patterns = array("pattern"=>"replace pattern"); ). Este patrón debe recortar los espacios en blanco y volver a agregar pestañas al principio de cada línea.
    2. Haga una llamada a ob_start() para capturar la salida
    3. Procese las funciones wp_head anteriores llamando a do_action('my_wp_head')
    4. Procesar la salida con una llamada a echo preg_replace( array_keys($patterns), array_values($patterns), ob_get_clean() );
respondido por el doublesharp 30.10.2012 - 01:03
2

Una mejor manera, para evitar el sangrado de las líneas que ya están sangradas, lo que algunos parecen ser

function indented_wp_head(){
  ob_start();
  wp_head();
  $header = ob_get_contents();
  ob_end_clean();
  echo preg_replace("/\n</", "\n\t<", substr($header, 0, -1));
  echo "\n";
}
    
respondido por el Michael 18.08.2016 - 23:45
1

Puedes resolverlo creando una función personalizada dentro de "functions.php":

function indented_wp_head(){
    ob_start();
    wp_head();
    $header = ob_get_contents();
    ob_end_clean();
    echo preg_replace("/\n/", "\n\t", substr($header, 0, -1));
    echo "\n";
}

Ahora solo necesita llamar a esta función en el "header.php":

<head>
    <!-- ... -->
    <?php indented_wp_head() ?>
</head>

Si también quieres usarlo para wp_footer() , puedes crear esta función para uso general en "functions.php":

/**
 * Indents the output of
 * a function
 *
 * @return void
 */
if (! function_exists("print_indented")) {

    function print_indented($fn)
    {
        ob_start();
        call_user_func($fn);
        $html = ob_get_contents();
        ob_end_clean();
        echo preg_replace("/\n/", "\n\t", substr($html, 0, - 1));
        echo "\n";
    }
}

Y llámalo en "header.php" o "footer.php" como

<?php print_indented("wp_footer") ?>
<?php print_indented("wp_head") ?>
    
respondido por el dude 06.12.2015 - 18:49
0

Utilice enlace . Se fusionará css, js y amp; html + eliminar comentarios inútiles. Se mejorará la velocidad de la página y se compactará todo el código HTML de la fuente.

Problema resuelto, supongo!

    
respondido por el hawkidoki 07.08.2013 - 00:48
0

Como adiciones, podemos especificar el número de pestañas para los bloques html que necesitan más de una pestaña y usar parámetros para las funciones.

function add_indented($fn, $num_tabs=1, $params=null){
    ob_start();
    call_user_func($fn, $params);
    $html = ob_get_contents();
    ob_end_clean();
    $tabs="";
    for ($i=0 ; $i<$num_tabs ; $i++) $tabs.="\t";
    echo preg_replace("/\n/", "\n" . $tabs, substr($html, 0, - 1));
    echo "\n";
}

Antes

<?php wp_head(); ?>
<?php wp_footer(); ?>
<?php get_template_part('template-parts/content','home'); ?>

Después:

<?php print_indented("wp_head"); ?>
<?php print_indented("wp_footer"); ?>

<!-- Add 4 tabs -->    
<?php print_indented('get_template_part', 4,'template-parts/content', 'home'); ?>
    
respondido por el xechino 20.07.2017 - 16:09

Lea otras preguntas en las etiquetas