简码返回错误的URL-Wordpress

时间:2019-01-30 12:39:52

标签: php wordpress url random

我正在编写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' );

1 个答案:

答案 0 :(得分:0)

我通过使用

更改返回输出来解决此问题
'<img src="' . '/z/' . $randomImage . '" class="' . esc_attr($values['class']) . '">';

但是我仍然不喜欢这种解决方案,有没有更好的方法来解决它?