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

Просмотр 15 ответов — с 1 по 15 (всего 52)
  • спасибо

    Извините за долгий ответ!!!
    Выяснилось, что на появление сообщения:

    Плагин произвёл при активации 198 символов неожиданного вывода. Если вы заметите ошибку «headers already sent», проблемы с RSS-лентами или другие неполадки, попробуйте деактивировать или удалить этот плагин.

    влияют включенные настройки:

    ini_set('display_errors',1);
    error_reporting(E_ALL);

    Плагин состоит из 4-х функций, они громоздкие, поэтому привожу скелет, если нужно что-то подробнее, то можно и подробнее привести:

    //--define constant--------/
    ...
    //////////////
    function activate_plugin()
    {
    	mkdir(SLD_UPLOAD_PATH);
    
    	add_option("opt_all_sld");
    
    }
    function add_admin_sub_menu()
    {
    	add_submenu_page('plugins.php', 'Name', 'Name', 8,basename(__FILE__), 'name_page');
    }
    
    function name_page() {
    //функция, которая отвечает за отображение меню
    }
    function sld_redirect() {
    //тут происходит обработка полей плагина в зависимости от параметра
     "action", приходящего в адресной строке. А так же в зависимости от
    того, нажата кнопка "Изменить" или "Добавить".
    }
    
    function slider() {
    //функция подготавливает массив данных для шаблона
    }
    
    register_activation_hook(__FILE__, 'activate_plugin');
    
    add_action('admin_menu', 'add_admin_sub_menu');
    add_action('admin_init', 'sld_redirect');

    Ясно. Atrax, спасибо за помощь, буду разбираться.

    Спасибо за ответ.

    Он генерируется сам и присылается по указанной почте. После первого входа пользователю предлагается сменить его или оставить без изменений.

    Почему-то ничего не приходит на реальном сервере, хотя указан существующий e-mail адрес. А на виртуальном сервере это будет работать? Как мне это проверить, перед тем как отдавать инструкцию пользователю?

    Вопрос вдогонку: сейчас все пользователи посчитались. Так после какого момента wordpress считает вновь созданных пользователей зарегистрированными ?

    Спасибо!

    Автор Bagira

    (@bagira)

    Спасибо, да таким образом предупреждение исчезает, остается только сообщение, которое выводится в зависимости от параметров «error», «charsout»:

    <?php if ( isset($_GET['error']) ) :
    
    	if ( isset($_GET['charsout']) )
    		$errmsg = sprintf(__('The plugin generated %d characters of <strong>unexpected output</strong> during activation.  If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']);
    	else
    		$errmsg = __('Plugin could not be activated because it triggered a <strong>fatal error</strong>.');
    	?>

    Автор Bagira

    (@bagira)

    Закомментировла вывод ошибок — все стало нормально. Но ведь по сути получается, что ошибка

    Undefined index: plugins in D:\localhost\wp\wp-admin\plugins.php on line 16

    так и осталась, нет мыслей почему она может возникать?

    Автор Bagira

    (@bagira)

    Одно замечание:
    Активируемый плагин является тестовой копией основного плагина, который на данный момент не активирован, но присутствует. Тестовый плагин имеет другое имя, хотя реализация та же, что и у основного. Но при физическом удалении основного плагина , ошибки при активации тестового все равно остаются. Может тут что-то искать надо, но не знаю что.

    Автор Bagira

    (@bagira)

    Спасибо всем, не бейте меня сильно, просто затмение мозгов какое-то. Кавычки ставила не в том шаблоне, который реально тестировался. Все получилось.

    Автор Bagira

    (@bagira)

    пробелы не помогают. Я уже пробовала.

    Автор Bagira

    (@bagira)

    global $wpdb;
    А как нужно объявлять глобальные переменные?

    Автор Bagira

    (@bagira)

    в том то и дело что хватает, этот запрос работает при прямом обращении к wp_posts и не работает при указанном выше:

    <?global $wpdb;
    
          $sql = 'SELECT id, post_title, post_type FROM ' .$wpdb->posts. 'WHERE post_type="post" OR post_type="page" ORDER BY post_type';
          $res = $wpdb->get_results($sql, ARRAY_A) ; 
    
          //max element
          $length = array();
          foreach ($res as $name) {
    
             $length[] = mb_strlen($name['post_title']);
          }
    
          $count  = count($length);
          $max = $length[0];
          for ($i=0; $i<$count; $i++) {
             if ($length[$i] > $max) {
             	$max = $length[$i];
             }
          }
    ?>

    Автор Bagira

    (@bagira)

    Извините за ложный след ошибка про оффсет относится не к самому запросу, а к его результату, который ниже используется.

    Пробелы не помогли. Результат запроса по-прежнему пуст. так в чем же тут дело?

    Автор Bagira

    (@bagira)

    Не знаю на сколько это правильно, но работает вроде как надо:

    Добавила в адрес перенаправления другое значение для параметра action. Соответсвенно в switch в функции отображения шаблонов обрабатываю его и выдаю нужное сообщение.

    function for_redirect() {
    
    switch ($action):
       case 'add_data':
          //если нажата кнопка
          if ($btn_sld_add) {
                  ......
             if ($error == '' )  {             
    
    wp_redirect(admin_url().'admin.php?page='.basename(__FILE__).'&action=edit_data_success&data='.$data_id');
            }
       break;
    
       case 'edit_data':
           ...
       break;
    }
    
    function slide_page(){
    
    switch ($action):
       case 'edit_data':
    
          include('template/edit_data_page.php');   
    
       break;
    
       case 'edit_data_success':
    
       $image_uploaded = __('Данные"'.stripslashes($data_title).'" успешно обновлены.');
       include('template/edit_data_page.php');
       break;
       ....
    endswitch;
    }
    
    add_action('admin_init', 'for_redirect');

    Автор Bagira

    (@bagira)

    Вроде бы в общем и целом все получилось, утро вечера мудренее, как говорится. Но один вопрос возник. До перенаправления в
    case ‘add_data’ я формирую переменную, которая содержит сообщение $image_uploaded об успешности действий и теперь должна выводиться на странице Edit, на которую идет перенаправление:

    switch ($action):
       case 'add_data':
          //если нажата кнопка
          if ($btn_sld_add) {
                  ......
             $image_uploaded = 'Сообщение';
             if ($error == '' )  {             
    
    wp_redirect(admin_url().'admin.php?page='.basename(__FILE__).'&action=edit');
            }
       break;
       case 'edit_data':
           ...
       break;

    Но значение этой переменной теряется, можно как-то ее вывести?

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