Как исправить кодировку символов в заголовке Wordpress для запятой, апострофа или кавычек? - PullRequest
0 голосов
/ 28 октября 2019

Я использую пользовательскую функцию для получения RSS-каналов на основе заголовка Wordpress.

Отлично работает, но если заголовок содержит запятую, апостроф или кавычку, он прерывает канал, поскольку отправляет кодировку html какчасть URL-адреса поиска RSS-канала.

Цель состоит в том, чтобы URL-адрес поиска RSS-канала содержал точный текст в заголовке Wordpress без какой-либо кодировки символов HTML. Я попытался html_entity_decode(get_the_title()), и он избавляется от апострофов и кавычек, но это не работает для запятых. Я предполагаю, что нужно сделать str_replace, чтобы избавиться от запятых, но не уверен, что лучший способ это сделать, а также использовать функцию html_entity_decode.

Вот пользовательская функция, которую я использую (как немногопользовательский плагин) пока. Спасибо за вашу помощь!

add_shortcode( 'custom_rss', 'execute_custom_rss_shortcode' );
function execute_custom_rss_shortcode() {
  return do_shortcode('[wp_rss_retriever url="https://news.google.com/rss/search?q=' . get_the_title() . '&hl=en-US&gl=US&ceid=US%3Aen" items="10"]');

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Я бы порекомендовал использовать preg_replace для удаления всех специальных символов из заголовка, разрешив только буквы и цифры (без специальных символов), я обновил ваш код и опубликовал пример:

add_shortcode( 'custom_rss', 'execute_custom_rss_shortcode' );
function execute_custom_rss_shortcode() {
    $filtered_title = preg_replace('/[^a-zA-Z0-9]/', '', get_the_title()); 

// Remove any special character from the title
    return do_shortcode('[wp_rss_retriever url="https://news.google.com/rss/search?q=' . $filtered_title . '&hl=en-US&gl=US&ceid=US%3Aen" items="10"]');
}
0 голосов
/ 01 ноября 2019

попробовал этот код. Он фильтрует запятые, кавычки и апострофы из заголовка, чтобы RSS-канал не прерывался сущностями HTML. Возможно, это не идеальный способ, поэтому любые другие лучшие решения приветствуются!

    $filter_title = preg_replace("/&#?[a-z0-9]+;/i", '', get_the_title());
  return do_shortcode('[feed-fetcher feeds="https://www.bing.com/news/search?q=' . str_replace(',', '', $filter_title) . '&format=rss" max="6"]');
}
...