Контактная форма WordPress 7 IP для определения местоположения в электронной почте

#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 ) , но отправленное электронное письмо не показывает страну, оно показывает только [имя_страны_], которое я использую в форме электронной почты