Ответы пользователя по тегу WordPress
  • Как оптимизировать / кэшировать кучу тяжелых запросов к MySQL?

    Kianl
    @Kianl Автор вопроса
    Печальный веб-разработчик
    Короче. Проблему решил так.

    - Услышал про индексы, пошел разбираться.
    - Наткнулся на длинную серьезную статью по этой теме: https://ruhighload.com/%D0%98%D0%BD%D0%B4%D0%B5%D0...
    - Изучил от и до; приписка в конце положила под стол.
    - Как опытный, крайне смекалистый программист-любитель я практически моментально и до последнего слова все не понял, поэтому от нудной теории перешел сразу к веселой практике.
    - Начал тестить; в процессе научился работать с БД через консоль.
    - Как оказалось, волшебная таблетка - создание индекса на поле ID для таблицы просмотров.

    $sql = 'CREATE INDEX id ON wp_post_views(ID)';
    $wpdb->get_results($sql);


    * здесь ID - это ID поста, к которому относится просмотр, а не primary key, как может показаться

    Заткнул я это на хук смены темы (надеюсь я правильно понял, что этот индекс не нужно обновлять вручную?). Залил патч на сервер и, - о чудо! - реально все летает. Там, где раньше грузилось за 10-15 сек стало грузить за 0.5-1.

    Mission Complete.

    P.S. Всем спасибо, кто помогал. Но впредь сильно не матюкайтесь.. Не все такие крутые гуру, как вы. Некоторые учатся в процессе. Отсюда и шишки.
    Ответ написан
  • Что с Wordpress? Почему штатный jquery перестал работать?

    Kianl
    @Kianl Автор вопроса
    Печальный веб-разработчик
    Короче, все исправил. Как обычно, сам... Выкладываю решение. Может кому пригодится.
    // Подключаем скрипты и стили админки
    add_action('admin_enqueue_scripts', 'ugd_admin_scripts');
    function ugd_admin_scripts(){
            // Тут у нас JQuery
            wp_enqueue_script	('ugd-jquery', 'https://code.jquery.com/jquery-3.4.1.min.js');
            // Тут у нас JQuery UI
            wp_enqueue_script	('ugd-jquery-ui', 'https://code.jquery.com/ui/1.12.1/jquery-ui.min.js');
            // Тут у нас тема (css-стили) для JQuery UI
            // Если не подключить, будут глюки типа двух крестиков на кнопке закрытия окна и т.п.
            wp_enqueue_style 	('ugd-jquery-ui-theme', 'https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
            // А тут у нас сам скрипт диалогового окна
            // Обязательно устанавливаем зависимость array('jquery-ui-dialog')
            wp_enqueue_script	('admin_scripts', get_template_directory_uri() . '/js/admin_scripts.js', array('jquery-ui-dialog'));
    }


    Всем спасибо. По крайней мере за попытки)
    Ответ написан
    Комментировать
  • Как переопределить заголовок title поверх плагинов?

    Kianl
    @Kianl Автор вопроса
    Печальный веб-разработчик
    Короче, как всегда сам решил проблему. Смотрите, че придумал.

    Поскольку title обеспечивается add_theme_support('title-tag'); , то его нужно отключить. Но сделать это нужно в определенный момент - когда WP еще не вписал заголовок title в head, но после того, как становится известна текущая страница (начинают работать функция is_tax() и ей подобные).

    Я немного поковырялся и нашел в документации хронологию событий ВП: https://codex.wordpress.org/Plugin_API/Action_Reference

    Для решения вопроса нужно событие parse_query.

    // Проверяем страницу и удаляем поддержку title-tag
    add_filter('parse_query', 'my_theme_remove_title_tag', 999, 1);
    function my_theme_remove_title_tag() {
    	if(is_post_type_archive() || is_tax()) {
    		remove_theme_support('title-tag');
    	}
    }
    
    // А теперь просто строим нужный нам заголовок и выводим его в <head>
    add_filter('wp_head', 'my_theme_custom_title', 999, 1);
    function my_theme_custom_title(){
    	// Тут что-то делаем с заголовком....
    	if(is_post_type_archive()) {
    		$title = 'Это будет заголовок архива!';
    	}
           
    	// А тут его выводим
    	echo '<title>' . $title . '</title>';
    }

    Таким образом изменяется заголовок только нужных страниц поверх плагинов (по крайней мере поверх All in SEO Pack), а на остальных остается нетронутым. По-моему очень круто получилось!

    Может кому пригодится :)
    Ответ написан
    Комментировать