WordPress 2.8 и плагин Post Templates

Vladimir
Опубликовано в: Патчи

Патч, исправляющий ошибки в заброшенном плагине

WordPress 2.8 сказался не самым лучшим образом на плагине Post Templates от Vincent Pratt. На данный момент в плагине присутствуют несколько серьёзных ошибок, которую сводят его практическую пользу к нулю. Хуже всего, что автор, по-видимому, забросил плагин, и исправлять ошибки теперь некому.

Итак, имеются следующие ошибки:

  • Ошибка «You do not have sufficient permissions to access this page» при попытке создания нового шаблона или редактировании существующего (и еще в нескольких местах) — появилась в WordPress 2.8.1 в результате исправления этой уязвимости;
  • Fatal error: Maximum execution time of 30 seconds exceeded in /wp-includes/plugin.php on line 385 при заходе на страницу редактирования страниц (звучит-то как!);
  • невозможность сохранения шаблонов, так как отсутствует кнопка «Сохранить» (это если вы побороли первую ошибку, либо у вас WordPress 2.8).

Теперь о том, как это всё исправить. Я сначала хотел выложить отдельные патчи для каждой ошибки, но потом передумал и решил выложить патч целиком (как обычно, в формате unified diff):

[-]
diff -uwdBrN post-template/includes/edit-page-template-page.php post-template.my/includes/edit-page-template-page.php
--- post-template/includes/edit-page-template-page.php  2009-02-19 10:52:22.000000000 +0200
+++ post-template.my/includes/edit-page-template-page.php   2009-06-15 05:59:17.000000000 +0300
@@ -108,7 +108,7 @@
    <input type="hidden" name="template_id" value="<?php echo $template_id; ?>" />
    <input type="hidden" name="type" value="<?php echo $template_type; ?>" />
    <input type="hidden" name="parent" value="<?php echo $template_parent; ?>" />
-   <div id="poststuff" class="metabox-holder">
+   <div id="poststuff" class="metabox-holder has-right-sidebar">
        <div id="side-info-column" class="inner-sidebar">
            <div id="side-sortables" class="meta-box-sortables ui-sortable" style="position: relative;">
                <div id="submitdiv" class="postbox">
diff -uwdBrN post-template/includes/edit-post-template-page.php post-template.my/includes/edit-post-template-page.php
--- post-template/includes/edit-post-template-page.php  2009-02-19 10:52:22.000000000 +0200
+++ post-template.my/includes/edit-post-template-page.php   2009-06-14 12:15:35.000000000 +0300
@@ -110,7 +110,7 @@
    <input type="hidden" name="type" value="<?php echo $template_type; ?>" />
    <input type="hidden" name="parent" value="<?php echo $template_parent; ?>" />
 
-   <div id="poststuff" class="metabox-holder">
+   <div id="poststuff" class="metabox-holder has-right-sidebar">
        <div id="side-info-column" class="inner-sidebar">
            <div id="side-sortables" class="meta-box-sortables ui-sortable" style="position: relative;">
                <div id="submitdiv" class="postbox">
diff -uwdBrN post-template/includes/managepages/managepages.php post-template.my/includes/managepages/managepages.php
--- post-template/includes/managepages/managepages.php  2009-02-19 10:52:22.000000000 +0200
+++ post-template.my/includes/managepages/managepages.php   2009-06-14 04:41:11.000000000 +0300
@@ -211,7 +211,7 @@
             
                     for( d in data ) {
                         for( e in data[d] ) {
-                            jQuery('<td>'+data[d][e]+'</td>').insertBefore('#page-'+d+'/td:nth-child('+position+')');
+                            jQuery('<td>'+data[d][e]+'</td>').insertBefore('tbody/tr#page-'+d+'/td:nth-child('+position+')');
                         }
                     }
                 });
diff -uwdBrN post-template/includes/plugin-class.php post-template.my/includes/plugin-class.php
--- post-template/includes/plugin-class.php 2009-02-19 10:52:22.000000000 +0200
+++ post-template.my/includes/plugin-class.php  2009-08-06 03:28:42.000000000 +0300
@@ -155,6 +155,14 @@
            add_options_page( __('Post Templates', POST_TEMPLATES_I18N_DOMAIN),
                __('Post Templates', POST_TEMPLATES_I18N_DOMAIN), 0,
                'post-template/includes/options-page.php' );
+
+           global $_registered_pages;
+           $file = plugin_basename('post-template/includes/import-page.php');
+           $hookname = get_plugin_page_hookname('post-template/includes/import-page.php', '');
+           $_registered_pages[$hookname] = true;
+           $file = plugin_basename('post-template/includes/help-page.php');
+           $hookname = get_plugin_page_hookname('post-template/includes/help-page.php', '');
+           $_registered_pages[$hookname] = true;
        }
       
        if (    current_user_can(POST_TEMPLATES_VIEW_TEMPLATES_CAP)
@@ -165,20 +173,20 @@
                0,
                'post-template/includes/manage-templates-page.php',
                '',
-               WP_CONTENT_URL . '/plugins/post-template/images/menu-icon.png' );
+               plugins_url('post-template/images/menu-icon.png') );
           
            if (current_user_can(POST_TEMPLATES_CREATE_TEMPLATES_CAP)) {
                add_submenu_page( 'post-template/includes/manage-templates-page.php',
                    __('New Post Template', POST_TEMPLATES_I18N_DOMAIN),
                    __('New Post Template', POST_TEMPLATES_I18N_DOMAIN),
                    0,
-                   'admin.php?page=post-template/includes/edit-post-template-page.php' );
+                   'post-template/includes/edit-post-template-page.php' );
               
                add_submenu_page( 'post-template/includes/manage-templates-page.php',
                    __('New Page Template', POST_TEMPLATES_I18N_DOMAIN),
                    __('New Page Template', POST_TEMPLATES_I18N_DOMAIN),
                    0,
-                   'admin.php?page=post-template/includes/edit-page-template-page.php' );
+                   'post-template/includes/edit-page-template-page.php' );
            }
        }
    }
diff -uwdBrN post-template/post-template.php post-template.my/post-template.php
--- post-template/post-template.php 2009-02-19 10:52:22.000000000 +0200
+++ post-template.my/post-template.php  2009-06-26 06:42:15.000000000 +0300
@@ -60,7 +60,7 @@
 require_once(POST_TEMPLATES_DIR . '/includes/dashboard-widget-class.php');
 require_once(POST_TEMPLATES_DIR . '/includes/post-templates-dao-class.php');
 require_once(POST_TEMPLATES_DIR . '/includes/post-templates-shortcodes-class.php');
-require_once(POST_TEMPLATES_DIR . '/includes/managepages/managepages.php');
+//require_once(POST_TEMPLATES_DIR . '/includes/managepages/managepages.php');
 //############################################################################
 
 //############################################################################

Первый и второй блоки исправляют третью ошибку, третий блок исправляет ошибку, на которую пожаловался ChuckMcB, четвёртый и пятый блоки исправляют первую ошибку, шестой блок — вторую.

Скачать:

Добавить в закладки

Связанные записи

6
Авг
2009

Комментарии к статье «WordPress 2.8 и плагин Post Templates» (7)

  1. Vladimir says:

    For those who come here from the WordPress support forum: please feel free to ask questions/leave comments, I do speak English :-)

  2. MalDiva says:

    Меня вот очень интересует вопрос: а стоит ли вообще обновляться до этой версии? Читала в комментах, что производительность увеличилась и с плагинами не дружит(((((((

    • Vladimir says:

      Трудно сказать… С одной стороны, стоит, ибо исправили несколько дыр, связанных с безопасностью, действительно в некотором роде увеличили производительность (теперь многие скрипты грузятся из футера страницы, что ускоряет начало отрисовки страницы).

      С другой стороны, их исправление уязвимости CORE-2009-0515 поломало многие плагины, производительность в плане работы с базой данных не улучшилась (местами, по-моему, стало хуже), размер кода всё растёт и растёт.

      Если Вас устраивает Ваш WordPress и не нужны новые плагины (которые пишутся под новые версии WordPress), то обновляться, вероятно, не стоит. Мое субъективное мнение :-)

    • Vladimir says:

      Ирина, если у Вас есть плагины, которые перестали работать в 2.8.x, давайте ссылки на них, я исправлю.

      • MalDiva says:

        А я не обновлялась пока. И по всей видимости еще долго не буду))))))) Спасибо!

  3. Vladimir says:

    Мда. Стоило только выложить пропатченную версию плагина, как сразу объявился его автор с новым релизом. Совпадение? :-)

  4. DEN says:

    Согласен)

Подписаться на RSS-ленту комментариев к статье «WordPress 2.8 и плагин Post Templates» Trackback URL: http://blog.sjinks.org.ua/wordpress/patches/608-wordpress-2-8-and-post-templates-plugin/trackback/

Извините, комментарии закрыты.