¿Cuál es la mejor forma de incluir imágenes desde la carpeta de imágenes de la plantilla?
Entendí que es mejor codificar manualmente la ruta a la carpeta de imágenes ya que de esta manera ahorras llamadas a funciones en PHP..
Definitivamente no me preocuparía por las llamadas a funciones, la caché de objetos de WordPress manejará todo eso por ti. Podrías definir la ruta como una constante si quisieras, pero generalmente no me molestaría.
Simplemente haría:
<img src="<?php bloginfo('stylesheet_directory')"?>/images/image.png" />
Lo edité a
<img src="<?php bloginfo('stylesheet_directory');?>/images/image.png" />
(el código anterior da errores)

La forma más fácil y sencilla de hacerlo es definir una variable única en el archivo functions.php
de tu tema.
Por ejemplo:
<?php
$theme_name_images = get_bloginfo('stylesheet_directory') . '/images/';
?>
No es necesario usar clases como sugería una respuesta anterior.
EDITADO: Debería ser get_bloginfo, en lugar de bloginfo(), como amablemente señaló Viper007Bond.

Cierto, pero es lo más simple. Nunca dije que fuera la forma más limpia de hacerlo.

Sí, pero ensuciar el espacio de nombres global solo es un problema si no usa una buena convención de nombres para sus variables. Por ejemplo, podría usar amits_stylesheet_directory y amits_template_url o en lugar de "amits" podría usar el nombre del cliente.

bloginfo()
hace echo. Lo que necesitas es get_bloginfo()
que retorna el valor.

@Amit: Depende. La mayoría de las llamadas a funciones son bastante rápidas en PHP, así que si estás buscando rendimiento, no me preocuparía demasiado por ello. Sin embargo, entiendo cómo te sientes al ver todas esas llamadas. Aún así, nunca querría codificar rutas de forma rígida.
Si vas a usar get_bloginfo('template_url')
muchas veces en tu tema, ¿por qué no asignarlo a una variable global en tu archivo functions.php
y luego hacer referencia a ella en todos los lugares donde normalmente harías referencia a la llamada de función? Asegúrate de nombrarla de una manera poco probable que cause conflictos, como amits_template_url
. Entonces haz esto en functions.php
:
global $amits_template_url;
$amits_template_url = get_bloginfo('template_url');
Y luego en tu tema haz referencia a ella en todos los lugares donde hubieras referenciado get_bloginfo('template_url')
.

Bueno, depende del tipo de desarrollo que estés haciendo. Si estás desarrollando plugins, necesitas usar las funciones porque nunca sabrás con certeza cuál será la estructura de la URL. Si estás trabajando en un sitio web específico, técnicamente está bien codificarlo directamente, pero sigue siendo desaconsejable, ya que impide la posibilidad de que la estructura de la URL pueda cambiar en el futuro.
Cada vez que desarrollo plugins o temas, estructuro el programa en una clase; de esa manera, puedo guardar valores repetitivos como propiedades del objeto (por ejemplo, la URL de WP y template_url). Así puedo usarlos rápidamente sin tener que llamar a las funciones repetidamente.
