WordPress 2.8 и плагин Post Templates
Патч, исправляющий ошибки в заброшенном плагине
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):
--- 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, четвёртый и пятый блоки исправляют первую ошибку, шестой блок — вторую.
Скачать:
Вложения:
- post-template.3.3.0.1 (application/zip)
- post-template (text/x-patch)
Авг
2009
Комментарии к статье «WordPress 2.8 и плагин Post Templates» (8)
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


For those who come here from the WordPress support forum: please feel free to ask questions/leave comments, I do speak English
Меня вот очень интересует вопрос: а стоит ли вообще обновляться до этой версии? Читала в комментах, что производительность увеличилась и с плагинами не дружит(((((((
Трудно сказать… С одной стороны, стоит, ибо исправили несколько дыр, связанных с безопасностью, действительно в некотором роде увеличили производительность (теперь многие скрипты грузятся из футера страницы, что ускоряет начало отрисовки страницы).
С другой стороны, их исправление уязвимости CORE-2009-0515 поломало многие плагины, производительность в плане работы с базой данных не улучшилась (местами, по-моему, стало хуже), размер кода всё растёт и растёт.
Если Вас устраивает Ваш WordPress и не нужны новые плагины (которые пишутся под новые версии WordPress), то обновляться, вероятно, не стоит. Мое субъективное мнение
Ирина, если у Вас есть плагины, которые перестали работать в 2.8.x, давайте ссылки на них, я исправлю.
А я не обновлялась пока. И по всей видимости еще долго не буду))))))) Спасибо!
Мда. Стоило только выложить пропатченную версию плагина, как сразу объявился его автор с новым релизом. Совпадение?
Согласен)
[...] месяца назад я писал о плагине Post Templates и его несовместимости с WordPress 2.8. С тех пор автор плагина исправил ошибки (что [...]