我设法解决了它。问题在于将自定义post类型与Metabox一起使用。php/MediaAccess。php(均来自WPAlchemy类)
假设您可以将自定义post类型与WPAlchemy一起使用,因为在实例化WPAlchemy\\u MetaBox对象时,您可以传递一些可选参数来启用这种costumization。像这样:
$mb = $my_custom_metabox = new WPAlchemy_MetaBox(array
(
\'id\' => \'_palestrantes_metabox\',
\'title\' => \'Palestrantes\',
\'types\' => array(\'post\',\'espresso_events\'),
\'template\' => get_stylesheet_directory() . \'/metaboxes/custom-meta.php\'
));
但在MetaBox中。php中,函数init使用一些验证代码来继续:
559 // must be creating or editing a post or page
560 if ( ! WPAlchemy_MetaBox::_is_post() AND ! WPAlchemy_MetaBox::_is_page()) return;
这两个函数都以调用
static function _get_current_post_type()
{
$uri = isset($_SERVER[\'REQUEST_URI\']) ? $_SERVER[\'REQUEST_URI\'] : NULL ;
if ( isset( $uri ) ) {
$uri_parts = parse_url($uri);
$file = basename($uri_parts[\'path\']);
if ($uri AND in_array($file, array(\'post.php\', \'post-new.php\'))) {
$post_id = WPAlchemy_MetaBox::_get_post_id();
$post_type = isset($_GET[\'post_type\']) ? $_GET[\'post_type\'] : NULL ;
$post_type = $post_id ? get_post_type($post_id) : $post_type ;
if (isset($post_type)) {
return $post_type;
}
else {
// because of the \'post.php\' and \'post-new.php\' checks above, we can default to \'post\'
return \'post\';
}
}
}
return NULL;
}
这里的问题是通过URI进行验证,它假设每个帖子或页面都会有“post”。php“或”发布新内容。php的URI。在我的情况下,结果是:
/wp管理员/管理员。php?页码=浓缩咖啡活动(&P);消息=1(&M);操作=编辑(&A);post=1750和;编辑\\u nonce=2de45bf97b&;return=编辑帖子
所以要解决它(顺便说一句,这并不值得骄傲)。我不得不在这两个代谢箱中添加另一个验证。php/MediaAccess。php也允许在“page=espresso\\u events”和“action=edit”时执行
嗯,就是这样。希望有帮助。谢谢