У меня есть веб-сайт WordPress с двумя настраиваемыми типами сообщений: book
и article
.
Из-за требований к дизайну я хочу создать шорткод для return
url
избранного изображения публикации. Я не мог использовать встроенную функцию get_the_post_thumbnail_url()
, потому что мои изображения кэшированы в wordpress.com
сети (с использованием Jetpack
), и эта функция возвращает кэшированный url
, что не соответствует моим требованиям к дизайну.
Я создал следующий шорткод:
function wp_featured_image_url( $atts ) {
global $post;
$url = get_the_post_thumbnail_url($post->ID);
if (is_singular($post_types = 'book')) {
if ( has_post_thumbnail() ) {
return $url;
}
else {
echo 'https://example.com/wp-content/uploads/year/month/generic-featured-image-for-books.png';
}
}
else
if (is_singular($post_types = 'article')) {
if ( has_post_thumbnail() ) {
return $url;
}
else {
echo 'https://example.com/wp-content/uploads/year/month/generic-featured-image-for-articles.png';
}
}
}
add_shortcode( 'featured_image_url', 'wp_featured_image_url' );
Он работает нормально, за исключением того, что заголовки файлов изображений на арабском языке (UTF-8), поэтому эта функция вернет url
, например:
https://example.com/wp-content/uploads/2019/10/كلام-عربي-كتير.jpg
Я хочу, чтобы он возвращал только urlencode
имени файла изображения. Однако, если я изменил return $url;
на return urlencode($url);
или return rawurlencode($url);
, он вернет весь URL как urlencode
:
https%3A%2F%2Fexample.com%2Fwp-content%2Fuploads%2F2019%2F10%2F%D9%83%D9%84%D8%A7%D9%85-%D8%B9%D8%B1%D8%A8%D9%8A-%D9%83%D8%AA%D9%8A%D8%B1.jpg
Я хочу иметь возможность настроить функцию так, чтобы первая часть url
оставалась нетронутой, и только имя файла изображения получало urlencode
, например:
https://example.com/wp-content/uploads/2019/10/%D9%83%D9%84%D8%A7%D9%85-%D8%B9%D8%B1%D8%A8%D9%8A-%D9%83%D8%AA%D9%8A%D8%B1.jpg
Может кто-нибудь указать мне правильное направление? Заранее спасибо.