WordPress: Интерактивный тег <!—more—> без перезагрузки страницы

В начале статьи хочу признаться, что я не верстальщик и не владею PHP, JavaScript или CSS на должном уровне, поэтому всё, что написано ниже, используйте на свой страх и риск. Возможно, это неправильно и надо делать не так. Я не знаю, как надо правильно, учусь самостоятельно, поэтому пишу, как умею хрум-хрум-хрум.

Решил привести в порядок свою главную страницу блога. Не нравятся мне длинные посты, которые нужно долго листать, чтобы перейти к следующему. Изначально рассматривал два варианта:

  1. Кнопка [Пропустить пост] для быстрой перемотки к следующему посту и возвращению к предыдущему
  2. Кнопка [Развернуть] для динамической загрузки остальной части поста после тега <!--more-->.

В итоге выбрал третий путь: весь пост загружается сразу, но часть после тега <!--more--> показывается или скрывается по клику на кнопку [развернуть/свернуть].

Я выбрал этот вариант по двум причинам:

  1. Скрытая часть поста должна корректно обрабатываться скриптами по событию onload/onready.
  2. Размер постов у меня небольшой.
развернуть

Вопросы и ответы для собеседования и подготовки Senior C++ разработчика

Всем привет! Решил систематизировать и записать актуальные на 2025 год вопросы и ответы программисту в позиции Senior C++. Вы можете это использовать как для проведения собеседований в качестве интервьюера, так и для подготовки к ним. Считаю, это самая скучная статья на моём сайте, но лучший способ что-то запомнить — это записать и систематизировать свои знания.

Немного о себе: пишу на C++ уже восемнадцатый год и немножко понимаю в программировании.

Кстати, недавно узнал, что человек запоминает 25% любой информации, но надолго. И вот смотрю я на эту прорву текста и думаю — если это всего лишь четверть, то ни фига себе — насколько огромная часть знаний прошла мимо меня.

развернуть

Обновляем краткое содержания статей в блоге с помощью ИИ, денег, bash и wp-cli

Всем привет! Если вы не первый раз на моём сайте, то могли заметить, что краткое содержание заметок содержит первые n слов (вроде, 22) из заметки безо всякого осмысления. По крайней мере, так было до недавнего времени.

Поскольку сейчас наступил XXI век, то пора передать формирование краткого содержания заметок на откуп искусственному интеллекту.

Делать плагин мне откровенно не хочется, поэтому я обновил все заметки с помощью bash-скрипта, запрашивая краткое содержание статьи через curl у Yandex GPT через их API.

Алгоритм такой:

  • получаю ID всех статей блога с помощью wp-cli
  • для каждой статьи блога, отправляю её содержимое в Yandex GPT с помощью API
  • получаю краткую выжимку статьи и показываю пользователю
  • если он согласен с содержимым, то обновляю поле post_excerpt у статьи
  • вывожу post_excerpt в мета поле description при формировании статьи в разделе
  • ???
  • PROFIT

Для регистрации и работы с Yandex GPT нужно немного денег, я потратил 50 рублей. Регистрация и получение идентификаторов каталога (folder_id) и API ключа (api_key) найдёте в этой статье на «Хабре»: (Как подключить Yandex GPT к своему проекту на Python)[https://habr.com/ru/articles/780008/].

Добавил в скрипт подтверждение каждого шага от пользователя, потому что иногда ИИ выдаёт какую-то политкорректную дичь типа «Я не могу обсуждать эту тему. Давайте поговорим о чём-нибудь ещё» на простые запросы, а также он не умеет работать с видео. И добавил проверку, что цитата не заполнена для поста, чтобы лишний раз не тратить запросы к ИИ.

развернуть

Добавляем подсветку нового языка в плагин Prismatic+Prism.js

Всем привет! Понадобилось мне вставить CMakeLists.txt в мою заметку с подсветкой кода. В блоге она включена с помощью плагина Prismatic и библиотеки Prism.js c темой «Tomorow Night», если вам интересно. И так родилась эта инструкция по добавлению нового языка (в нашем случае CMake) в плагин. Все работы проходят в папке плагина wp-content/plugins/prismatic, порядок действий следующий:

  1. Переходим на страницу скачивания Prism. Выбираем minified версию и только тот язык, который вам нужен, у меня был язык cmake и получился файл на 18 килобайт.
  2. Вставляем по адресу ./lib/prism/js/lang-cmake.js кусок кода с Prism.language.cmake. Пример lang-cmake.js
  3. Открываем ./inc/resources-enqueue.php в функции prismatic_prism_classes в первом массиве после 'language-bash' вставляем 'language-cmake', во втором после 'lang-bash' вставляем 'lang-cmake'.

Мне кажется, первый массив отвечает за название CSS класса, а второй — название JS файла, но я не уверен, потому что я ненастоящий PHP программист.

Подключение git репозитория в CMake

Всем привет, недавно изучал либу SFML и с удивлением обнаружил, что её можно подключить в CMakeLists.txt с помощью команды FetchContent следующим образом:

cmake_minimum_required(VERSION 3.28)

project(main LANGUAGES CXX)

include(FetchContent)
FetchContent_Declare(SFML
    GIT_REPOSITORY https://github.com/SFML/SFML.git
    GIT_TAG 3.0.2
    GIT_SHALLOW ON
    EXCLUDE_FROM_ALL
    SYSTEM)
FetchContent_MakeAvailable(SFML)

add_executable(main src/main.cpp)
target_compile_features(main PRIVATE cxx_std_17)
target_link_libraries(main PRIVATE SFML::Graphics)

И при создании файлов для сборки, CMake самостоятельно скачает и подключит SFML к вашему проекту — чистая магия, на мой взгляд.

Блог Евгения Жирнова