strpos () для заголовка в метабоксе в wordpress не может найти «-»

Я кодировал простой метабокс для WordPress, и у меня возникла небольшая проблема при сохранении данных.

Мета-поле находится на моей странице «Создать статью» и имеет два текстовых поля. Они сохраняются как пост-мета при сохранении поста.

При сохранении проверяю заполнены ли поля - если они пустые беру заголовок поста и извлекаю нужные мне данные. Идея в том, чтобы взять все, что есть до первого "-". Если знака минус нет, весь заголовок должен быть сохранен в моем пользовательском поле. Теперь это не может найти «-» в заголовке (хотя он есть) и каждый раз возвращает весь заголовок:

function get_from_title($title) {
  $pos = strpos($title, '-');

  if ($pos) {
    return trim(substr($title, $pos));
  }
  else {
    $pos = strpos($title, '–'); //added this since two different signs could be used

    if ($pos) {
      return trim(substr($title, $pos));
    }
    else {
      return $title;
    }
  }
}

функция, вызывающая get_from_title, получает заголовок через get_the_title($post_id), и это работает без проблем.

WordPress как-то кодирует заголовок? Почему strpos не может найти знак минус? Что я должен искать вместо этого?

Спасибо


person i--    schedule 05.09.2012    source источник


Ответы (1)


Я ответил на тему, которую вы начали по этой теме на форумах WordPress. Вы можете найти свой ответ здесь.

Как вариант, вот что я сказал. :)

О да. Это сложно. Итак, почему strpos не может найти дефис в названии, когда мы его ясно видим? Потому что его нет. хе-хе.

Что WordPress здесь делает, так это преобразует ваш дефис (знак минус) в короткое тире.

Это заставит вас приседать: $pos = strpos( $title, '-' );

Вы хотите это: $pos = strpos( $title, '–' );

Дайте мне знать, как все обернулось для вас. :)

person Spencer Cameron-Morin    schedule 05.09.2012