我正在编写WP短代码,以使来自输入所给定路径的随机图像无效。 [random-image pag =“” class =“”] 该代码可以很好地工作,但是返回正确的url +我输入的短代码页面。 例: 我目前正在本地翻修我的网站。 实际的网址是:https://localhost/z/ 但是在我完成编码后,它将变成https://localhost/
如果我将简码放在/ prova页面(https://localhost/z/prova/) 图像src将显示“ wp-content / themes / generatepress_child / img / home / 2.jpg”,这是正确的,但是如果我将鼠标悬停在它上面,它将显示完整的路径,如下所示: “ https://localhost/z ** / prova / ** wp-content / themes / generatepress_child / img / home / 2.jpg”而不是“ https://localhost/z/wp-content/themes/generatepress_child/img/home/2.jpg”
我尝试更改$ imagesDir在 $ imagesDir = get_site_url()。 'wp-content / themes / generatepress_child / img /'。 esc_attr($ values ['pag'])。'/'; 或$ imagesDir ='z / wp-content / themes / generatepress_child / img /'。 esc_attr($ values ['pag'])。'/'; 甚至:$ imagesDir ='https://localhost/z/wp-content/themes/generatepress_child/img/'。 esc_attr($ values ['pag'])。'/';
但是所有这些都返回
// Random img
function random_image( $atts, $content = null ) {
$values = shortcode_atts( array(
'pag' => 'home',
'class' => 'imgrnd',
), $atts );
$imagesDir = 'wp-content/themes/generatepress_child/img/' . esc_attr($values['pag']) .'/';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$randomImage = $images[array_rand($images)];
return '<img src="' . $randomImage . '" class="' . esc_attr($values['class']) . '">';
}
add_shortcode( 'random-image', 'random_image' );
答案 0 :(得分:0)
我通过使用
更改返回输出来解决此问题'<img src="' . '/z/' . $randomImage . '" class="' . esc_attr($values['class']) . '">';
但是我仍然不喜欢这种解决方案,有没有更好的方法来解决它?