Brownian motion

around the essentials…

 

Публікації Tagged ‘WordPress’

LilyPond → WordPress: поновлювати опубліковані партитури просто!

Задача: маємо багато партитур, опублікованих на сайті під WordPress, інтенсивно з ними працюємо, — тож варто мати механізм поновлення партитур після редагування. Ноти набираємо у LilyPond.

Дуже коротко:

  1. На сайті публікуємо партитури із додаванням суфікса відповідно до дати та часу збереження (генерування) партитури, напр. назва файлу ОйЧийТоКіньСтоїть_20170406_175520.pdf означає, що партитуру було згенеровано з файлу ОйЧийТоКіньСтоїть.ly 6 квітня 2017 року о 17:55:20. Звісно, такі суфікси додаються автоматично при генеруванні. Таким чином, до речі, уникаємо можливих нюансів із кешуванням опублікованого.
  2. LilyPond використовує простий текстовий формат, тому використовуємо систему зберігання та відстеження версій Mercurial.
  3. На власному комп’ютері редагуємо партитуру, після чого: hg commit && hg push.
  4. На сервері маємо те саме сховище mercurial; після редагування виконуємо hg pull && hg update.
  5. На подію update на сервері сконфігуровано hook, який запускає скрипт.
  6. Скрипт видає перелік файлів .ly, які, імовірно, треба поновити на сайті WordPress. При цьому ми могли редагувати, наприклад, ОйЧийТоКіньСтоїть_alto.lyi (а не сам ОйЧийТоКіньСтоїть.ly) — скрипт показує саме «головний» файл.
  7. Наступні кроки може виконувати цей саме скрипт, проте це не задача сховища ,) Віддамо це іншому скрипту.
  8. Інший скрипт бере файл по файлу усі партитури, які, імовірно, треба поновити. Для кожної партитури:
    1. Знаходимо у каталозі wp-uploads нашого сайту раніше завантажені файли: ОйЧийТоКіньСтоїть_([0-9]{8}_[0-9]{6}).pdf.
    2. Якщо щось знайшли — виконуємо lilypond -o ОйЧийТоКіньСтоїть_`date +"%Y%m%d_%H%M%S"` ОйЧийТоКіньСтоїть.ly.
    3. Якщо успішно — кличемо wp cli! Він замінить (операція search-replace) у табличках WordPress усі згадки ОйЧийТоКіньСтоїть_<стара_дата> на ОйЧийТоКіньСтоїть_<нова_дата>.
    4. Видаляємо у wp-uploads старі файли, переносимо туди нові.

І все)

Насправді це все трохи складніше, бо ми використовуємо мітки для генерування різних варіантів із одного джерела (при цьому файли з мітками можуть називатися ОйЧийТоКіньСтоїть--Torig_20170407_101222.pdf). Крім того, до якихось файлів WordPress уже міг додати «порядковий номер», тоді назва буде, наприклад, така: ОйЧийТоКіньСтоїть--Torig_20170407_101222-1.pdf.

Але це все легко вирішується.

Звісно ж, це можна застосувати не тільки до партитур, а й до будь-яких файлів, які треба періодично поновлювати.

(1 votes, average: 5 out of 5)

WordPress: грати всі долучення

Коментуючи одну з попередніх публікацій, Юрко спонукав таки мене написати короткий код (shortcode) для вставляння програвача з переліком всіх долучених до публікації аудіофрагментів.

Тобто, я хочу до даної публікації доліпити кілька mp3 файлів, підписати їх і у публікації використати якийсь короткий код… Словом, нижче.

У файлі functions.php дописуємо таке:

function get_player( $post ) {
  $urls    = array();
  $titles  = array();
  $artists = array();
 
  $attachments = get_children(
      array('post_parent' => $post->ID,
            'post_type' => 'attachment',
            'post_mime_type' => 'audio/mpeg',
            'order_by' => 'menu_order', 'order' => 'ASC'));
  if( $attachments ) {
    foreach ( $attachments as $att_id => $att ) {
      // allow non-latin chars in file names:
      $url = wp_get_attachment_url($att_id);
      $url = preg_replace('#(.*/)([^/]*)$#e', "'\\1'.rawurlencode('\\2')", $url);
      $url = rawurlencode( $url );
      $urls[] = $url;
 
      $title  = rawurlencode( str_replace(",", ":", $att->post_title) );
      $titles[] = $title;
 
    }
    $player_id = 'audioplayer-' . $post->ID;
    $player = '<p class="audioplayer_container"><div class="np-audioplayer" id="'. $player_id .'">(No Adobe Flash Player?..)</div></p>' . "\n"
            . '<script type="text/javascript">' . "\n"
            . '    AudioPlayer.embed("' . $player_id . "\", {\n"
            . '      soundFile: "' . implode(",", $urls)    . "\" // ,\n"
            . '      titles: "'    . implode(",", $titles)  . "\"\n"
            . "    });\n"
            . "</script>\n";
    return $player;
  }
  return false;
}
 
function playall( $atts ) {
  global $post;
  return get_player($post);
}
 
add_shortcode( "playall", "playall" );

Після цього ми можемо у тілі повідомлення написати [playall]. Ось, для прикладу, я причепив до цього повідомлення три фрагменти:

(No Adobe Flash Player?..)

Всі фрагменти я підписав через відповідний інтерфейс вордпреса, їх порядок також виставив саме там. До речі, якщо закоментувати titles: ..., audioplayer візьме відповідне поле з mp3 id tag. У цьому конкретному випадку він звідти бере інформацію для artists («Neville Marriner – Academy of St Martin in the Fields» у даному випадку).

Чому двічі rawurlencode? Не знаю :-)

До речі, у налаштуваннях вордпресівського Audio Player’а треба вимкнути «криптування» посилань.

(No Ratings Yet)

re.place — модуль для WordPress (regexp search and replace)

Я зробив собі невеличкий модуль для WordPress, яким можна шукати (як регулярні вирази) певні рядки у повідомленнях та сторінках блоґа та міняти їх на щось інше.

Ось дивіться:

Я набрав PARDON, а на сторінці ви бачите:
nice smile

Я набрав , а на сторінці ви бачите:

Зараз все дебажжу nice smile

Ви можете звантажити модуль re.place тут.

А тут — офіційна сторінка модуля re.place .

(No Ratings Yet)

Переклад інтерфейса NextGEN Gallery

Переклав інтерфейс модуля для WordPress — NextGEN Gallery.

Чудовий модуль створення фотогагалерей, розміщення їх у альбомах, «асоціювання» статей із зображеннями, створення слайд-шоу і багатьма іншими цікавими функціями. Чудовий модуль :-)

Дякую, Alex!

Ось переклад інтерфейса — пробуйте, коментуйте…

(No Ratings Yet)

Перемикання мов

Знайшов чудовий плагін для WordPress: Language Switcher.

Лише одна проблема поки що: віджет для NextGEN Gallery не хоче, щоб я йому відредагував заголовок таким чином, щоб він також «перемикався».

Ну, і доводиться редагувати файли теми — міняти "шось" на __("шось"), паралельно підправляючи відповідний .po (і потім msgfmt uk.po -o uk.mo).

(No Ratings Yet)

Останні публікації

Most Rated

Highest Rated

Теґи

Архіви