Advertisement
tolikpunkoff

lj-cut-style-wp-plugin

Nov 7th, 2016
754
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.08 KB | None | 0 0
  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. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement