#php #wordpress #strpos
Вопрос:
У меня есть такая проблема, так как мне пришлось сменить поставщика сервера. Я портировал несколько сайтов на базе WordPress с помощью плагина дубликатора. Теперь везде, где в содержимом страницы я использую тег, он возвращает ошибку
Предупреждение: strpos(): Пустая игла в /XXX/post.php на линии XXXX
Все дело в коде:
function is_local_attachment($url) {
if (strpos($url, home_url()) === false) {
return false;
}
if (strpos($url, home_url('/? attachment_id =')) ! == false) {
return true;
}
$id = url_to_postid($url);
if ($id) {
$post = get_post($id);
if ('attachment' == $post-> post_type) {
return true;
}
}
return false;
}
и более конкретно о линии:
if (strpos($url, home_url()) === false) {
У кого-нибудь был такой случай и кто знает, как его решить?
Все было хорошо до переключения сервера. И я хотел бы, чтобы так было и впредь. Я бы предпочел не исправлять ошибку, а найти и устранить то, что привело к ней.
Единственное, что приходит на ум, — это то, не было ли у меня URL-адреса сайта на предыдущем сервере, мне не нужно иметь его на новом-поле пустое.
Комментарии:
1. Пожалуйста, прочтите сообщение об ошибке. Закрывается из-за опечатки.
2.
the field is empty
…да, именно об этом говорит вам предупреждающее сообщение! Лучше заполнить URL-адрес.
Ответ №1:
Самый простой способ решить эту проблему-включить «защитную оговорку». Что-то вроде этого:
function is_local_attachment($url) {
$homeUrl = home_url();
if (empty($home_url)) {
return;
}
. . .
Я не знаю, что home_url()
возвращает, но, очевидно, он может возвращать пустую строку, и это вызывает у вас проблемы.
Если вы используете PHP 7.1 или выше, вы можете использовать что-то вроде:
if (strpos($url, home_url()??' ') === false)
Лично я бы не стал этого делать, потому что это труднее читать, но это решило бы вашу проблему.
Ура! 🙂
=C=