Ответы в темах

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Если кому понадобится.
    Переписал одноименную функцию в плагине так:

    function symbiosis_post_save($input) {
      global $user_level;
    
      $home = get_usermeta($_POST['post_author'], 'symbiosis_category');
      $output = array();
    
      if ( $user_level < 8 ) {
    	  $output[] = $home;
      } else {
      foreach($input as $item) {
          $output[] = $item;
      }
      }
      return $output;
    }

    и еще подправил одну функцию, чтобы брал рубрику, указанную по умолчанию в wordpress для публикации записей:

    function symbiosis_update_term($user_id, $taxonomy, $user_name = null) {
      $current = get_usermeta($user_id, 'symbiosis_'. $taxonomy);
      $data['name'] = $user_name;
      $data['parent'] = get_option('default_category');
      if(!empty($current)) {
        if(is_null($user_name)) {
          wp_delete_term($current, $taxonomy);
        }
        else {
          wp_update_term($current, $taxonomy, $data);
        }
      }
      elseif(!is_null($user_name)) {
        $exists = get_term_by('name', $user_name, $taxonomy);
        if(!empty($exists)) {
          $new['term_id'] = $exists->term_id;
        }
        else {
          $new = wp_insert_term($user_name, $taxonomy, $data);
        }
        update_usermeta($user_id, 'symbiosis_'. $taxonomy, $new['term_id']);
        update_usermeta($user_id, 'symbiosis_default', $new['term_id']);
      }
    }

    плагин работает у меня. потестировал. правда еще не выложил на рабочий сайт 🙂

    Получилось «отделить» админа: теперь ему можно писать в любую категорию, а то плагин не позволял этого делать))))))
    Осталось скрыть некоторые панельки при написании поста от простых пользователей (например, категории)

    Здравствутйе. Может, такие плагины помогут?
    Comment Rating
    LikeBot — Decentralized like-system

    Справился с частью задачи: исправил плагин, чтобы он создавал рубрику с именем пользователя после регистрации в рубрике по умолчанию, установленную в настройках wordpress.
    Осталась одна проблема с правами: никак не хочет изменять рубрику под админом у уже написанных постов или же создаваемых — упорно ставит их в «админскую» рубрику, созданную плагином.
    ЕСли кто может помочь, буду рад, или в какую сторону там смотреть? Заранее большое спасибо.

    P. S. Думаю, что там нужно куда-то вставить такое:
    get_usermeta($user_id, 'user_level') < 8
    Вот куда))))

    не совсем он правда хорошо работает: не позволяет админу публиковать посты в других категориях((

    Юрий, спасибо за наводку. Воспользовался вашей идеей.
    Может кому пригодится. Также добавил транслит для имени пользователя на всякий случай 🙂 …ну и подправил версию :-))

    <?php
    /*
    Plugin Name: user_upload
    Plugin URI:
    Description: Any user uploads files into his own directory
    Version: 1.0
    Author: Yuri 'Bela' Belotitski
    Author URI: http://www.portal.kharkov.ua/
    */
    $gost = array(
       "Є"=>"EH","І"=>"I","і"=>"i","№"=>"#","є"=>"eh",
       "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
       "Е"=>"E","Ё"=>"JO","Ж"=>"ZH",
       "З"=>"Z","И"=>"I","Й"=>"JJ","К"=>"K","Л"=>"L",
       "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
       "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"KH",
       "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
       "Ы"=>"Y","Ь"=>"","Э"=>"EH","Ю"=>"YU","Я"=>"YA",
       "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
       "е"=>"e","ё"=>"jo","ж"=>"zh",
       "з"=>"z","и"=>"i","й"=>"jj","к"=>"k","л"=>"l",
       "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
       "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
       "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
       "ы"=>"y","ь"=>"","э"=>"eh","ю"=>"yu","я"=>"ya","«"=>"","»"=>"","—"=>"-"
      );
    
    function uu_cd($uploads) {
       global $userdata, $gost;
       $userdir .= strtr($userdata->user_login, $gost);
       $uploads['path'].='/'.$userdir;
       $uploads['url'].='/'.$userdir;
       wp_mkdir_p($uploads['path']);
       return $uploads;
    }
    
    function uu_restrict($where) {
       global $userdata;
       if ((strstr($_SERVER['REQUEST_URI'],'/wp-admin/media-upload.php')
         || strstr($_SERVER['REQUEST_URI'],'/wp-admin/upload.php') )
       && !strstr($where,'ID =')
       && !current_user_can('level_5')) $where .= ' AND post_author = '.$userdata->ID;
       return $where;
    }
    
    add_filter('upload_dir','uu_cd');
    add_filter('posts_where_paged','uu_restrict');
    ?>

    Плагин создает папку с именем пользователя (в латинице).

    P. S. Осталась еще одна задача, но это для другой темы (разрешить авторизованным пользователям публикацию записей в определенную категорию).

    У меня есть решение образца ноября 2007 года. Может кто-то более актуальное подскажет.

    Спасибо. Если не трудно, не могли бы обнародовать его, наверняка можно доработать что-то, или появятся у кого идеи. Думаю, это штука пригодилась бы не только мне. Спасибо))

Просмотр 7 ответов — с 1 по 7 (всего 7)