tolikpunkoff

lj-cut-style-wp-plugin

Nov 7th, 2016
158
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. /*
  4. Plugin Name: LJ-cut style cut
  5. Description: Add Livejournal-like Cut Shortcode [lj-cut text="Cut text..." unicancor="unically_ancor"] HIDDEN TEXT [/lj-cut]. No CSS, no Javascript. Плагин добавляет шорткод, эмулирующий ЖЖ-подобный кат с дополненным функционалом. Использование: [lj-cut] Текст под катом [/lj-cut]. Необязательные параметры: text="Текст ссылки на подкат", по-умолчанию 'Read more...', unicancor="unically-ancor", позволяет задать уникальный якорь на ту область страницы, на которую ведет ссылка ката. Использовать только латинские буквы и знаки - и _. Якорь должен быть уникальным. По-умолчанию используются якоря в стиле ЖЖ (cutid1, cutid2 и т.д.). Возможно использовать шорткод несколько раз в одном посту. Плагин не требует Javascript и не использует специальные возможности CSS.
  6. Version: 0.0.1b
  7. Author: Tolik Punkoff
  8. Author URI: http://tolik-punkoff.com/
  9. License: any
  10.  */
  11.  
  12.  
  13. function ljcut_shortcode($atts, $content=null)
  14. {          
  15.     static $cutid=0; //номер текущего cutid в посту
  16.     static $oldplink=''; //предыдущий permalink
  17.     //устанавливаем атрибут text, как в ЖЖ
  18.     extract(shortcode_atts(array(
  19.           'text' => 'Read more...',
  20.           'unicancor' => '',
  21.     ), $atts));
  22.  
  23.     $plink=get_permalink(); //получаем URL текущего поста
  24.     $clink=get_bloginfo('url').$_SERVER["REQUEST_URI"]; //URL текущей страницы
  25.  
  26.     if ($oldplink!=$plink) //пост новый, надо начать отсчет cutid заново (с 1)
  27.     {
  28.         $cutid=1;
  29.         $oldplink=$plink; //и сохранить текущий
  30.     }
  31.     else //мы все еще обрабатываем старый пост
  32.     {
  33.         $cutid++; //прибавляем значение cutid
  34.     }
  35.  
  36.     if ($plink==$clink)
  37.     {
  38.         //мы в теле поста, cut надо раскрыть и вставить якорь
  39.         if ($unicancor=='') //если якорь не задан, используем cutidn
  40.         {
  41.             $ret='<a name="cutid' . $cutid . '"></a> ' .$content;
  42.         }
  43.         else
  44.         {
  45.             $ret='<a name="' . $unicancor . '"></a> ' .$content;
  46.         }
  47.     }
  48.     else
  49.     {
  50.         //мы на одной из страниц, но не в самом посту
  51.         //надо установить ссылку на пост и на нужный якорь в посту
  52.         if ($unicancor=='') //если якорь не задан, используем cutidn
  53.         {
  54.             $ret='<a class="more-link" ' . 'href="' . $plink . '#cutid' . $cutid .
  55.              '">' . $text . '</a>';
  56.         }
  57.         else
  58.         {
  59.             $ret='<a class="more-link" ' . 'href="' . $plink . '#' . $unicancor .
  60.              '">' . $text . '</a>';
  61.         }
  62.     }
  63.    
  64.     return $ret;
  65. }
  66.  
  67. add_shortcode ('lj-cut','ljcut_shortcode');
  68.  
  69. ?>
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×