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!
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" />
¿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