desarrollo de complementos de wordpress – uso de imágenes – ruta no encontrada

3 minutos de lectura

Estoy escribiendo un complemento para wordpress y tengo problemas con las imágenes. Si tengo mi complemento en wp-content/plugins/my-plugin/ y allí, una carpeta images/test.png, ¿cómo hago referencia a esa imagen en mi código? No quiero tener que poner las imágenes en el tema, ya que cuando otros usuarios vengan a buscar mi complemento, ¡la imagen no funcionará!

entonces mi estructura es

myplugin/plugin.php (which includes several files...)
myplugin/pluginstyle.css
myplugin/includes/page.php
myplugin/images/test.png

Tengo la hoja de estilo funcionando bien, pero cuando trato de usar una imagen como fondo para un elemento, no funciona.

¿Cómo hago referencia a la imagen en mi complemento?

salida de prueba de page.php

<div class="test"><p>hello</p></div>

CSS

.test { background: url(../images/test.png) repeat-x; }

¿Dónde me estoy equivocando? ¿Hay algún método que debería usar? ¡Gracias por cualquier ayuda!

  • ¿El CSS es externo o está incrustado en el HTML?

    – El médico muerto

    16 de junio de 2010 a las 13:07

  • Vea la publicación a continuación. Llamo al CSS usando el gancho de acción wp_head. ¿Entonces es externo, no incrustado en el html, creo?

    – Matt Facer

    16 de junio de 2010 a las 14:50

La constante PHP de WordPress WP_PLUGIN_URL contiene la URL absoluta de su carpeta de complementos. Entonces, para obtener la URL, use WP_PLUGIN_URL . '/myplugin/images/test.png'. En la hoja de estilos, las rutas de las imágenes siempre son relativas a la propia hoja de estilos. usando

.test { background: url(images/test.png); }

debería funcionar, siempre que esté en una hoja de estilo externa. Si está en línea, debe usar la URL absoluta.

  • bueno, llamo a la hoja de estilo en mi complemento usando el enlace wp_head(). Simplemente genera … Realmente no quiero codificar ningún estilo en los archivos PHP (que es donde usaría el método WP_PLUGIN_URL … ¿o es esa la única forma? ¿No vería images/test.png cuando se llame para esa carpeta de imágenes en la raíz, es decir: raíz/imágenes o cualquiera que sea la página (usando enlaces permanentes)/imágenes ??

    – Matt Facer

    16 de junio de 2010 a las 14:49

  • No. Con la forma en que incluye el archivo CSS, al usar url(images/test.png) se buscará en la carpeta correcta. Las direcciones URL relativas dentro de una hoja de estilo externa hacen referencia a rutas de direcciones URL relativas a LA HOJA DE ESTILO, no al documento solicitado. Esta es exactamente la misma forma en que los temas usan imágenes en la hoja de estilo. Mismo concepto.

    – John P Bloch

    16 de junio de 2010 a las 15:04

  • sí, solo usar imágenes/prueba.png funcionó … ¡no puedo creerlo! Seguro que probé ese primero… ¡obviamente hice algo mal!

    – Matt Facer

    16 de junio de 2010 a las 17:26

Una forma de hacer esto es:

plugins_url('images/test.png', __FILE__)

…que le dará la URL correcta incluso si el usuario ha cambiado el nombre del directorio principal.

Usé la respuesta de Collin de esta manera:

    <img src="https://stackoverflow.com/questions/3053112/<?php echo plugins_url("images/test.png', __FILE__ ); ?>" border="0" />

¿Ha sido útil esta solución?