Кодінг

На прохання знайомого написав плагін по виводу посилань біржи Setlinks за допомогою мультивіджетів. Так що, якщо ви користуєтеся цією системою, то може вам знадобиться. Детальніша інформація та сам плагін виклали тутечки:

http://studio.atlaskit.com/setlinks-plugin.html

Якщо користуватиметься популярністю, то може потім на офіційний репозиторій WordPress вдасться викласти.

Read more

Інколи виникає потреба створити сайт, доступ до інформації з якого мала лише б певна група людей. Зробити це досить легко (хоча варто пам’ятати що це лише свого роду захист від дурня і нема нічого, що не можна зламати, тож домашнє порно власного виробництва чи інші важливі речі в інтернет викладати взагалі не варто :-)) і ось кілька кроків: Continue reading Рецепт “закритого” сайту на WordPress

Read more

0. Робимо бекап бази данних.
1. Створюємо кастомну таксономію, якщо її ще нема.
2. Йдемо в PhpMyAdmin, і відкриваємо таблицю wp_term_taxonomy
3. Шукаємо записи, де значенням поля term_id відповідають айді ваших рибрик, які ви хочете перенеси в іншу таксономію.
4. Міняємо в цих записах значення taxonomy на зареєстровану вами назву таксономії, в яку ви хочете перемістити рубрики.
5. Значення поля parent обнуляємо (або ставити айді батьківського тега, якщо у вашій таксономії вже є інші теги)

Read more

Ще одна функція, яка виводить останні коментарі вашого сайту в будь-якому місці і яка по суті є міксом кількох готових рішень з блогосфери. Я “допиляв” її, додавши всі можливі (як на мене) варіанти контенту, який може захотітися вивести. А то зазвичай то дата не виводилася (або виводилася, але в якомусь нелюдському форматі) то ще щось…

function mixa_recent_comments($count = 2, $echo = true, $comment_len = 35){
    global $wpdb;
    $sql = "SELECT DISTINCT *
        FROM $wpdb->comments
        LEFT OUTER JOIN $wpdb->posts ON ( $wpdb->comments.comment_post_ID = $wpdb->posts.ID )
        WHERE comment_approved = '1'
        AND comment_type = ''
        AND post_password = ''
        ORDER BY comment_date_gmt DESC
        LIMIT $count";
    $comments = $wpdb->get_results($sql);
    $out = "n";
    foreach($comments as $comment){

// розмітку наведено згідно сайту, для якого було написано цю функцію. Сподіваюсь, вам буде нескладно розібратись і змінити під свою верстку

$tpl = '<p class="gray"><a>comment_post_ID ) . '#comment-' . $comment-&gt;comment_ID.'"&gt;'.$comment-&gt;comment_author.'</a><br /> к статье <a>comment_post_ID).'/#comment-'.$comment-&gt;comment_ID.'"&gt;'.$comment-&gt;post_title.'</a><br /> написал(а):</p><p>'.strip_tags(mb_substr(apply_filters('get_comment_text', $comment-&gt;comment_content), 0, $comment_len)).'</p> <span class="date">'.comm_date($comment-&gt;comment_date_gmt).'</span>';
        $out .= "nt".'<div class="cmnt">'.$tpl.'</div>';
    }
    $out .= "n";
    if ($echo) echo $out;  
        else return $out;
}
function comm_date($time){
    $in = array('-',':');$on = ' ';$time = str_replace($in,$on,$time);
    list($Y,$M,$D, $h, $m, $s) = sscanf($time, '%s %s %s %s %s %s');

/* Оскільки все взято прямо з сайту, для якого це писалося, то дати на російській. Це вже точно не складно переписати :) */
    $month = array(
          '01'=&gt;'января',
          '02'=&gt;'февраля',
          '03'=&gt;'марта',
          '04'=&gt;'апреля',
          '05'=&gt;'мая',
          '06'=&gt;'июня',
          '07'=&gt;'июля',
          '08'=&gt;'августа',
          '09'=&gt;'сентября',
          '10'=&gt;'октября',
          '11'=&gt;'ноября',
          '12'=&gt;'декабря'
        );
    return "$D ".$month[$M]." $Y года в $h:$m";
}
Read more

Взагалі для виводу на сторінки з записами частин постів я зазвичай використовую тег <!–more–>, але в процесі роботи над одним з сайтів довелося трішки шаманити для того, аби виводити анонси (цитати, прев’ю… – називайте як завгодно) записів з суворо лімітованою кількістю слів чи символів. В інтеренеті вистачає рішень, але є один ньюанс – функції з англомовних форумів не враховують того, що кирилиця і латиниця рахуються по-різному (саме тому люди люблять писати смс’ки латиницею – більше влазить 🙂 ).

Отже, моя вдосконалена і універсальна функція:

function excerpt($limit) {
$excerpt = get_the_excerpt(); // отримуємо цитату
$excerpt = strip_shortcodes($excerpt); // очищаємо від шорткодів
$excerpt = strip_tags($excerpt); // очищаємо від тегів
  if (iconv_strlen($excerpt, 'UTF-8')&gt;=$limit) {
    $the_str = mb_substr($excerpt, 0, $limit). "...";
  } else {
  $the_str = $excerpt;
  }
return $the_str;
}

Continue reading Витяг/цитата/прев’ю (excerpt) посту з обмеженням кількості знаків/слів

Read more

Ми звикли до дуже зручних тегів типу is_page(), is_post() і т.д. А як бути з такими тегами для власних типів записів? Дуже просто – створити власні! В functions.php пишемо:

function is_books() // створюємо тег is_books
{
    $post_type = get_query_var('post_type');
    // short had for if / else;
    return $post_type == 'books' ? true : false; // вказуємо тип запису для якого працюватиме цей тег
}

Все! Перевіряємо наступним чином:

if(is_books()) {echo &quot;Це книга!<br />";}

У мене працює.

P.S. Лишається відкритим питання, як зробити, що працювала конструкція типу is_books(’45’) чи is_books(‘azbuka’).

Read more

Дякуючи своїй роботі та завданням, які переді мною виникають, маю змогу витрачати трішки часу на ознайомлення з новими можливостями WordPress. Отже, код, розміщений нижче дозволяє вивести об’єкти (записи) певного типу (post_type) зі значенням (term) певної таксономії (вивід постів з багатьма значеннями кількох таксономій буде реалізовано в версії 3.1. Про це можна почитати тут:
http://ottopress.com/2010/wordpress-3-1-advanced-taxonomy-queries/).

Наприклад, у нас є типи постів: Ноутбуки, Телефони, MP3-плеєри. І є таксономія “Виробники” зі значеннями Sony, Panasonic, Apple тощо. Тож, коли нам треба отримати записи про всі ноутбуки фірми Sony, це – якраз те, що треба. Окрім того, в цьому коді вже передбачена розбивка постів за кількістю на сторінку, а також, що важливо, його можна використовувати в будь-якому шаблоні теми (хто не знає, спроби втулити у, скажімо, page template, вивід через query_posts чи get_posts потерпають фіаско). Continue reading Вивід постів певних типів з певними значеннями таксономій

Read more

Під час роботи над одним сайтом виникла потреба виводити усі пости певної групи з розбивкою за роками. Уявіть собі, що є записи про якісь події, скажімо, вечірки, і нам треба відобразити на одній сторінці усі вечірки, що відбулися, з розбивкою за роками. Типу:

2010
– вечірка у Васі
– йога-паті
– день колгоспника

2009
– вечірка у Пєті
– рок-паті

і т.д.

Рішення в інтернеті я не знайшов, тож довелося вмикати мізки 🙂 Continue reading Розбивка постів у WordPress за датою

Read more

Буває, у вас є якісь часто вживані конструкції (шорткоди, шматки коду – блоки типу

<div class="takiy-to"></div>

якісь заготовки коду тощо), які ви часто використовуєте при написанні постів. Зазвичай, такі речі вставляються або копі-пестом, або щоразу набираються ручками. Можна значно спростити собі задачу, вмонтувавши у ваш редактор кнопку, яка вставлятиме необхідний код у пост.

Наприклад, якщо ви часто використовуєте в пості таблиці, то ця кнопка може вставляти для вас заготовку типу:

<table class="takiy-to">
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>

Зробити це дуже просто. Continue reading Власні кнопки у редакторі WordPress

Read more

У мене є багато сайтів, на яких публікуються анонси певних подій. Зазвичай, вони виводяться на головній окремим блоком. Все добре, окрім того, що з часом, коли анонс уже неактуальний, а нових немає, він продовжує “висіти”…

Треба було вирішити дві проблеми:
1. Як виводити лише актуальні анонси (наприклад, якщо анонсована подія відбулася 12 числа такого-то місяця-року, то потрібно щоб 13-го числа цей анонс без всякого втручання адміністратора перестав відображатися)
2. Як зробити так, щоб у випадку, коли актуальні анонси відсутні, не відображався пустий блок з оформленням, що використовується для показу тих-таки анонсів.

Нарешті моя не зовсім програмістська голова “дозріла” (не без штурму форумів) для вирішення подібних задач. Отже, в якості нотатки для самого себе та з надією, що це рішення згодиться ще комусь, ділюся кодом: Continue reading Як зробити вивід лише актуальних анонсів у WordPress

Read more