• Как вывести список городов и областей на WordPress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Для начала вам понадобится простая функция конвертации городов, а так же зарегистрировать гет-параметр на фильтре query_vars

    if ( ! function_exists( 'get_converter_wp_cities' ) ) {
    
    	/**
    	 * Return string or array with wp cities.
    	 *
    	 * @param string $control Key to get one value. Optional. Default null.
    	 *
    	 * @return string|array|false
    	 */
    	function get_converter_wp_cities( $control = null ) {
    
    		// Sanitize string (just to be safe).
    		if ( ! is_null( $control ) ) {
    			$control = get_title_slug( $control );
    		}
    
    		// Main converter array.
    		$converter = array(
    			'moscow'           => 'Москва',
    			'saint-petersburg' => 'Санкт-Петербург',
    			'novosibirsk'      => 'Новосибирск',
    		);
    
    		$converter = apply_filters( 'get_converter_wp_cities', $converter );
    
    		// Return controls.
    		if ( is_null( $control ) ) {
    			return $converter;
    		} elseif ( ! isset( $converter[ $control ] ) || empty( $converter[ $control ] ) ) {
    			return false;
    		} else {
    			return $converter[ $control ];
    		}
    	}
    }
    
    if ( ! function_exists( 'query_vars_wp_cities' ) ) {
    
    	/**
    	 * Function for 'query_vars' filter-hook.
    	 * 
    	 * @param string[] $public_query_vars The array of allowed query variable names.
    	 *
    	 * @return string[]
    	 */
    	function query_vars_wp_cities( $public_query_vars ){
    
    		$public_query_vars[] = 'city';
    
    		return $public_query_vars;
    	}
    }
    add_filter( 'query_vars', 'query_vars_wp_cities' );


    Вывести список городов вы можете простым циклом, создавая ссылки с помощью функции add_query_arg()

    echo '<ul class="city-list">';
    
    foreach ( get_converter_wp_cities() as $key => $city ) {
    	$url = add_query_arg( array( 'city' => $key ), get_home_url( '/' ) );
    
    	echo '<li class="city-list-item"><a href="' . esc_url( $url ) . '" class="link">' . esc_html( $city ) . '</a></li>';
    }
    
    echo '</ul>';


    Получить значение текущего горда из гет-параметра мы можете функцией get_query_var()

    $city = get_query_var( 'city', false );
    var_dump( $city );


    Чтобы создать записи физически, как в вашем примере, вы можете зарегистрировать тип записи и таксономии для него с помощью register_post_type() и register_taxonomy(), а создать записи wp_insert_post()

    Шорткод можете создать по этому шаблону
    if ( ! function_exists( 'wp_city' ) ) {
    
    	/**
    	* Add shortcode with city [wp_city city=""]
    	*
    	* @param array $atts shortcode attributes.
    	*
    	* @return string
    	*/
    	function wp_city( $atts ) {
    
    		// Define a white list of attributes.
    		$atts = shortcode_atts( array(
    			'city' => get_query_var( 'city', false ),
    		), $atts );
    
    		if ( $atts['city'] ) {
    			$output = '<span class="current-city">' . esc_html( get_converter_wp_cities( $atts['city'] ) ) . '</span>';
    		}
    
    		return apply_filters( 'wp_city', $output );
    	}
    }
    add_shortcode( 'wp_city', 'wp_city' );


    Большая проблема — собирать тексты и заголовки для SEO. Для создания переменных плагина Yoast можете взять этот шаблон

    function get_yoast_current_city() {
    
    	$city = get_query_var( 'city', false );
    
    	if ( $city ) {
    		$string = $city;
    	} else {
    		$string = '';
    	}
    
    	return $string;
    }
    
    
    // Define the action for register yoast_variable replacments.
    function register_custom_yoast_variables() {
    	wpseo_register_var_replacement( '%%CurrentCity%%', 'get_yoast_current_city', 'advanced', __( 'Some instead title text', 'wpgen' ) );
    }
    
    // Add action.
    add_action( 'wpseo_register_extra_replacements', 'register_custom_yoast_variables' );


    Еще одна проблема в том, что вам понадобятся склонения городов в тексте и заголовках. Для решения этой задачи я создавал большую excel-таблицу со списком и парсил ее библиотекой SimpleXLSX

    655af38fd63a6389461115.png
    Ответ написан
    2 комментария
  • Как отобразить дату как сегодня, вчера, а далее как обычно в системе указано?

    fibit
    @fibit
    full-stack developer
    Что-то вроде этого?

    function wph_human_date($hdate = '') {
        if (!is_admin()) {
            $post_date = get_the_time('d.m.Y');
            $current_date = date('d.m.Y');
    
            if ($post_date === $current_date) {
                $hdate = 'сегодня';
            } elseif ($post_date === date('d.m.Y', strtotime('-1 day', strtotime($current_date)))) {
                $hdate = 'вчера';
            } else {
                $hdate = $post_date;
            }
        }
        return $hdate;
    }
    
    add_filter('get_the_date', 'wph_human_date');
    Ответ написан
    3 комментария
  • Лучший язык для разработки веб-приложений на Andorid&IOS?

    Adamos
    @Adamos
    это все в виде приложения для телефона

    это когда приходите в заведение

    И СТАВИТЕ КАКОЕ-ТО ЛЕВОЕ, НИ РАЗУ ВАМ НЕ ВСРАВШЕЕСЯ ПРИЛОЖЕНИЕ ТОЛЬКО ДЛЯ ТОГО, ЧТОБЫ
    сканируете qr и заказываете

    ?

    В реальных Евразиях, например, в виде таких штрих-кодов сделано меню - тупо ссылка на сайт с включенной информацией о том, в каком вы заведении (и, возможно, за каким столиком, но тут уже не уверен). Никаких приложений, кроме браузера, для этого на хрен не нужно.
    Ответ написан
    Комментировать
  • Почему не выводится изображение в шапку сайта?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Используйте функцию get_theme_file_uri()

    $image_path = get_theme_file_uri( '/assets/images/MyTheme-Header.png' );
    Ответ написан
    Комментировать
  • Почему не меняется заставка темы word press?

    YBB
    @YBB
    Возможно, потому что screenshot и screenshot.png - две большие разницы.
    Ответ написан
    1 комментарий
  • Доступность сайта: резерв вместо оригинала при проблемах?

    vabka
    @vabka
    Токсичный шарпист
    Придерусь сначала к терминам:
    1. Это должна быть не "копия сайта" а ровно этот же сайт на другом сервере. Aka реплика

    2. Вообще выходы из строя бывают разные

    3. Не должно быть различий "основной" и "резервный" - обе реплики должны быть равнозначны.

    Решается такое, обычно, при помощи мониторинга и балансировщика нагрузки.
    Если балансировшик видит, что одна из реплик перестала отвечать на запросы (или отвечает слишком долго), то тогда все запросы идут на вторую реплику.

    Переносить запросы на реплику только в случае сбоя - глупо, тк к тебя так простаивают мощности. Лучше всегда раскидывать нагрузку 50/50.

    Ищи по запросу L7 load balancer
    Ответ написан
    Комментировать
  • Как Узнать откуда с какого сайта перебросило на ссылку?

    @rPman
    Под ссылке никак, владелец веб сервера m.olimp.bet может смотреть по referer в логах сервера
    Ответ написан
    Комментировать
  • Не могу скачать Windows 10 в россии, как скачать?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если нужен именно оригинальный образ windows10 и нет возможности скачать с офсайта, то можно поступить по другому, узнать хешсуму нужного iso-образа и уже по этой хешсуме найти в интернете образ.
    Для последней доступной на офсайте Windows 10 Русский SHA-256 будет:
    Русский 64-bit	2A7C440C984EB018F513901E8ED96405213D237938C410C5089C0FAC7BA01898
    Русский 32-bit	7B339135C62CB06C8EB8748922659FC36FBE1DB08C2749B036C00676455A5D00

    взято с офсайта
    Windows-10-ISO.png

    сами хеши легко яндексяца и гуглятся

    после скачивания еще раз проверяем, например:
    $ sha256sum Win10_22H2_Russian_x64v1.iso 
    2a7c440c984eb018f513901e8ed96405213d237938c410c5089c0fac7ba01898  Win10_22H2_Russian_x64v1.iso
    Ответ написан
    Комментировать
  • Возможно ли восстановить сайт?

    Sanes
    @Sanes
    Делайте новый проект. Как раз с учетом ошибок предыдущего.
    Ответ написан
    Комментировать
  • Почему не получается вытащить значение переменной из функции наружу?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Ваш код ломает мозг
    register - ничего не возвращает
    add - пытается отправит в акшен саму себя
    $hook_suffix не существует
    Ответ написан
    Комментировать
  • Как правильно закрыть от индексации URL с GET параметром источника ссылки?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Не индексировать страницы в url которых имеется url параметр param, robotx.txt:
    User-agent: *
    Disallow: /*?param=

    Но лучше использовать канонические адреса, html страницы:
    <link rel="canonical" href="https://www.example.com/statya"/>
    Ответ написан
    1 комментарий
  • Сайт с www ведёт на страницу хостинга, а без www работает нормально. Нужно ли делать редирект?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нужно ли с этим что-то делать?

    Вижу тег "ПОИСКОВАЯ ОПТИМИЗАЦИЯ", попробую угадать, что Вы имеете ввиду. Скорее всего, вы хотели сказать "Нужно ли мне с этим что-то делать, чтобы поисковая оптимизация стала лучше"?
    Нужно! На данный момент у Вас 2 сайта, один с www, а другой без www. Делайте редирект с www на без www. Аналогичное сделайте с http > https.
    Ответ написан
    Комментировать
  • Как написать атрибут 'name' в данном случае?

    @risejs
    <form>
        <input name="image[0][url]">
        <input name="image[0][id]">
    
        <input name="image[1][url]">
        <input name="image[1][id]">
    
        <input name="image[2][url]">
        <input name="image[2][id]">
    </form>
    Ответ написан
    Комментировать
  • Как установить часовой пояс и синхронизировать время?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Насколько я знаю - некоторые ВПС берут время с хостового сервера. Возможно в вашем случае - тоже.
    Попробуйте написать в техподдержку о проблеме.
    Ответ написан
    1 комментарий
  • Как установить часовой пояс и синхронизировать время?

    caramingo
    @caramingo
    админ из русского манчестера
    Если к примеру нужно московское время то выполни команду timedatectl set-timezone Europe/Moscow
    А саму синхронизацию можно настроить установив ntp и добавив российские сервера для сихронизации. Статей по настройке полно.
    Ответ написан
    2 комментария
  • Как настроить SMTP для Wordpress для отправки данных из формы?

    YBB
    @YBB
    1. <form action="subscribe/email.php" method="POST">
    Если включено ЧПУ, то так делать нельзя. Путь должен быть абсолютным, от корня сайта.

    2. mail($to, $subject, $message, $headers);
    Если хотите чтобы использовался плагин и соответственно вордпресс, то к скрипту надо подключать вордпресс и вызывать не mail(), а wp_mail(). Однако это хоть рабочий, но не совсем правильный подход. Правильнее сделать свой плагин и подключать скрипт к вордпрессу, а не наоборот.

    А еще правильнее не изобретать велосипед, а использовать готовый плагин обратной связи, например, CF7.
    Ответ написан
    1 комментарий
  • Для чего нужен nodejs?

    @Alex_At_Net
    Обращайтесь, помогу - https://t.me/codecraft_phd
    самое простое объяснение: node.js - это exe-файл `node.exe`, который выполняет инструкции из .js файла. Запускать из коммандной строки:

    node.exe server.js

    Инструкцией в JS файле может быть: создать web-server, который на запрос /users возвращает HTML строку со списком пользователей.

    server.js файл может быть таким:

    require('http').createServer((req, res) => {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Привет!');
    }).listen(3000, () => { });


    express - это набор функций (в примере выше require, createServer - вызовы функций), которые упрощают написание правил "запрос -> генерация ответа". Посмотрите на примеры: https://expressjs.com/en/starter/hello-world.html

    хост-провайдер, в данном случае, предоставляет машину, с windows или linux, на которой можно запустить node.exe с приведенным server.js. Хост провайдер, в отельной системе, настраивает так, что запросы www.mysite.com направляются на эту машину, на её 3000 порт.

    php - это, в большинстве случаев, модуль Web-server-а. В терминах этого примера, php - это функция, которой передается php файл, а на выходе - строка результата. Например:

    require('http').createServer((req, res) => {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end(php('c:\\projects\\app\\main.php')); // вызов PHP
    }).listen(3000, () => { });
    Ответ написан
    7 комментариев
  • Для чего нужен nodejs?

    @holllop
    Попробую ответить по порядку.
    Node.js является средой выполнения JavaScript, которая работает за пределами браузера, на сервере. Он позволяет разрабатывать серверный код для веб-страниц и веб-приложений. В контексте веб-сервера, Node.js предоставляет возможность создания и запуска сервера, который будет обрабатывать HTTP-запросы и отвечать на них.
    Всё это слишком абстрактно, сложно материализующее в голове понятия... Скажем, есть к примеру хост-провайдер, предоставляющие место для сайта. Он же использует тот же http запрос для отдачи нам нужных файлов? Или взять к примеру php... Про него не говорят, что с его помощью нужно создать веб-сервер?

    Хост-провайдер или хостинг-провайдер - это компания, которая предоставляет услуги хостинга, т.е. предоставляет место на своих серверах для размещения сайтов. Когда вы загружаете веб-страницы на хостинг-провайдер, он использует веб-серверное ПО (например, Node.js, Apache, Nginx) для обработки входящих запросов от клиентов и отдачи файлов, которые запрошены браузерами пользователей.
    что такое веб сервер?

    веб-сервер (например, на базе Node.js или PHP) - это программное обеспечение, которое обрабатывает HTTP-запросы, предоставляет веб-содержимое и выполняет необходимые операции для функционирования веб-приложений. Node.js предлагает возможности для разработки серверного кода на JavaScript, в то время как PHP является отдельным языком программирования со своими инструментами и функциональностью.
    Ответ написан
    Комментировать
  • Нужно ли устанавливать на ПК node.js для разработки приложений на React и React Native?

    Aetae
    @Aetae
    Тлен
    React Native - нет, он без сборки не заведётся.
    React - да, но придётся выкинуть 90% уроков из сети на помойку, так как писать придётся не на jsx, а на прямом использовании api, т.е. React.cteateElement(Component, ...) вместо <Component ...>. Про 60% библиотек и вспомогательных утилит тоже можно будет забыть, с ещё 20% придётся хорошенько повозиться чтоб запустить.

    В целом же заниматься фронтом без ноды и обвеса в наше время - для сильных духом.:)
    Ответ написан
    Комментировать