#wordpress #contact-form-7
#wordpress #контактная форма-7
Вопрос:
Я использую [_remote_ip]
в электронном письме, которое я получаю от контактной формы 7, есть ли способ показать название или флаг страны вместо полученного IP-номера?
Основная проблема возникла, когда я активировал кэширование, когда местоположение страны php перестало работать, поэтому я должен использовать [_remote_ip]
в электронном письме, чтобы узнать местоположение контакта, но это не очень хорошее решение, что мне всегда приходится определять IP вручную.
Вот почему я хочу проверить, есть ли способ показать этот IP как имя или как флаг.
Комментарии:
1. Есть плагин, который может это сделать. wordpress.org/plugins/geoip-detect
2. Привет, Говард, большое спасибо за ответ, это не работает, это единственный вариант, который у нас есть?, или есть другой способ показать ip в качестве названия города instaid? теперь я добавил веб-сайт ip перед кодом ip следующим образом: ipinfo.io /[_remote_ip] но это не так эффективно, еще раз спасибо 🙂
3. Я имею в виду … есть альтернативные варианты. Вы используете WooCommerce? Вы можете подключиться к геолокации из него. Но на самом деле, лучше всего было бы создать свой собственный тег Contact Form 7 — form.
4. Еще раз привет, я не использую WooCommerce :), я не очень хорошо разбираюсь в кодировании 🙂 я также пытался ввести идентификатор uniq для своей контактной формы с помощью кода, а не плагина, и я не смог это исправить 🙂
Ответ №1:
Это добавит тег формы в контактную форму 7 [country]
— добавьте его в свой functions.php или сделайте это плагином. ЧТОБЫ использовать это, вам понадобится подписка (доступен бесплатный уровень) на https://ipstack.com .
add_action('wpcf7_init', function (){
wpcf7_add_form_tag( 'country' , 'cf7_ip_to_country_form_tag' );
});
function cf7_ip_to_country_form_tag($tag){
// Your API Key for https://ipstack.com is required
$api_key = 'xxxxxxx';
// Get API Response
$url = 'http://api.ipstack.com/' . $_SERVER['REMOTE_ADDR'] . '?access_key=' . $api_key;
$response = wp_remote_get($url);
$body = json_decode(wp_remote_retrieve_body($response));
/* $body = Object returned from ipstack.
* $body->country_name = Full Country Name
* $body->country_code = 2 Letter ISO Abbrev
* set the value based on what you want.
*/
return '<input type="hidden" name="country" value="'.$body->country_name.'">';
}
Комментарии:
1. большое вам спасибо, вы так добры, я пытался это сделать, но я думаю, что я что-то не так сделал, добавляя api к функции. я создал учетную запись и допустим, например, ключ доступа к API: ABC12345 пожалуйста, перепишите приведенный выше код для меня, чтобы я скопировал и вставил в функцию. большое спасибо и прошу прощения за беспокойство 🙂
2. Вставьте свой ключ api вместо xxxxx
3. Хо Говард, должен ли я оставить скобки ‘ ‘ и установить api между ними? и должен ли я оставить это как есть ‘?access_key=’ большое вам спасибо 🙂
4. вы должны написать
'your_api_key'
в поле «да»…5. Привет, чувак, это не сработало:(, я сделал именно то, что вы просили меня сделать, я вижу, что вызов api работает ( ibb.co/6Hj1NNB ) , но отправленное электронное письмо не показывает страну, оно показывает только [имя_страны_], которое я использую в форме электронной почты