2011-04-28 9 views
40

En resumen, todo lo que necesito es hacer mi WordPress hacer estoWordPress: salvar `get_template_part()` a la variable

$var = get_template_part('loop', 'index'); 

pero, get_template_part() no devuelve HTML, se imprime.
Necesito este HTML almacenado en $var - ¿tiene alguna idea de cómo hacerlo?

+0

¿imprimirías más tarde? Me refiero a '$ var'. – ewroman

Respuesta

63

Esto no es para lo que get_template_part fue para, get_template_part esencialmente se comporta como la función de PHP requiere. Justin Tadlock writes a lot more about this here y también habla sobre una función de Wordpress que podría ser más útil para usted - locate_template.

alternativa, si se quería cortar esta funcionalidad utilizando get_template_part, se puede utilizar la plantilla de amortiguación:

function load_template_part($template_name, $part_name=null) { 
    ob_start(); 
    get_template_part($template_name, $part_name); 
    $var = ob_get_contents(); 
    ob_end_clean(); 
    return $var; 
} 
+0

cuando pongo esto en mi tema solo obtengo tocino y no el contenido del archivo ....: echo "tocino". load_template_part ('registration-form.php'); – helgatheviking

+0

No estoy seguro de dónde dice Atomicus que quieren el PHP literal sin procesar, get_template_part actúa como un include en lugar de un file-content-getter. –

+1

debería comentar para decir que tienes razón, esto funciona totalmente, estaba alimentando la información incorrecta a la función (agregando .php). aunque yo establecería $ part_name = NULL por defecto para que pueda simplemente llamar a load_template_part ('content-aside') – helgatheviking

4

¿qué pasa?

$file = file_get_contents(STYLESHEETPATH . '/template-part.php'); 
return $file; 

Estoy seguro de que hay una manera mejor, pero que parece funcionar para mí.

12

No me gusta el búfer de salida, aunque +1 por pensarlo como una opción.

creo que Helga estaba en algo, pero hay que respetar las child_themes todavía y la ruta de tema, a fin de utilizar locate_template() en su lugar (también como sugirió Simon).

Esto funciona bien e incluso se puede utilizar dentro de un filtro o función de código corto (en mi caso) (quería que mi shortcode mostrara el contenido dentro de un archivo de plantilla, para separar la capa de visualización de la capa lógica) .

return file_get_contents(locate_template("template-file-name.php")); // don't forget the .php! 
+2

Lo intenté, pero eso no ejecutó la página de la plantilla, ¿hay alguna forma de ejecutarlo y devolver la cadena de salida? – Ayyash

+0

Necesita usar el buffer de salida en ese caso según la respuesta de @ SimonScarfe. –

+0

Solo lee el archivo, no lo ejecuta. – Codebeat

Cuestiones relacionadas