2015-05-28 4 views
0

Я пытаюсь создать всплывающее окно, запущенное с панели инструментов tinyMCE.wp_enqueue_media() вызов, вызывающий фатальную ошибку

Когда я добавляю wp_enqueue_media() вызов содержания всплывающего окна, я получаю следующее исключение с трассы:

[28-May-2015 01:32:00 UTC] PHP Fatal error: Call to undefined function wp_get_current_user() in /Applications/MAMP/htdocs/devblog/wp-includes/capabilities.php on line 1385 
[28-May-2015 01:32:00 UTC] PHP Stack trace: 
[28-May-2015 01:32:00 UTC] PHP 1. {main}() /Applications/MAMP/htdocs/devblog/wp-admin/media-upload.php:0 
[28-May-2015 01:32:00 UTC] PHP 2. require_once() /Applications/MAMP/htdocs/devblog/wp-admin/media-upload.php:16 
[28-May-2015 01:32:00 UTC] PHP 3. require_once() /Applications/MAMP/htdocs/devblog/wp-admin/admin.php:31 
[28-May-2015 01:32:00 UTC] PHP 4. require_once() /Applications/MAMP/htdocs/devblog/wp-load.php:37 
[28-May-2015 01:32:00 UTC] PHP 5. require_once() /Applications/MAMP/htdocs/devblog/wp-config.php:80 
[28-May-2015 01:32:00 UTC] PHP 6. include_once() /Applications/MAMP/htdocs/devblog/wp-settings.php:215 
[28-May-2015 01:32:00 UTC] PHP 7. ZipRecipes::zrdn_iframe_content($post_info = *uninitialized*, $get_info = *uninitialized*) /Applications/MAMP/htdocs/devblog/wp-content/plugins/zip-recipes/zip-recipes.php:48 
[28-May-2015 01:32:00 UTC] PHP 8. ZipRecipes::view($name = *uninitialized*, $args = *uninitialized*) /Applications/MAMP/htdocs/devblog/wp-content/plugins/zip-recipes/class.ziprecipes.php:1348 
[28-May-2015 01:32:00 UTC] PHP 9. include() /Applications/MAMP/htdocs/devblog/wp-content/plugins/zip-recipes/class.ziprecipes.php:1613 
[28-May-2015 01:32:00 UTC] PHP 10. wp_enqueue_media($args = *uninitialized*) /Applications/MAMP/htdocs/devblog/wp-content/plugins/zip-recipes/views/create-update-recipe.php:51 
[28-May-2015 01:32:00 UTC] PHP 11. get_allowed_mime_types($user = *uninitialized*) /Applications/MAMP/htdocs/devblog/wp-includes/media.php:2910 
[28-May-2015 01:32:00 UTC] PHP 12. current_user_can($capability = *uninitialized*) /Applications/MAMP/htdocs/devblog/wp-includes/functions.php:2292 

Мой главный файл плагин имеет это (соответствующий код):

if (strpos($_SERVER['REQUEST_URI'], 'media-upload.php') && strpos($_SERVER['REQUEST_URI'], '&type=z_recipe') && !strpos($_SERVER['REQUEST_URI'], '&wrt=')) 
{ 
    ZipRecipes::zrdn_iframe_content($_POST, $_REQUEST); 
    exit; 
} 

и zrdn_iframe_content генерирует простой файл .php только с html и следующим php:

<?php 
// jQuery 
wp_enqueue_script('jquery'); 
// This will enqueue the Media Uploader script 
wp_enqueue_media(); 
?> 

Что я делаю неправильно, чтобы вызвать это?

ответ

1

Вам необходимо переместить wp_enqueue_media() внутрь функции, которая не запускается до тех пор, пока WordPress не загрузит необходимые файлы. Для этой функции это explained further in the WP Codex.

Например:

function load_custom_code() { 
    wp_enqueue_media(); 
} 
add_action('admin_enqueue_scripts', 'load_custom_code'); 
+0

Спасибо! Это устраняет исключение. Однако содержимое, созданное в 'zrdn_iframe_content', является самодостаточным (это означает, что это не то, что добавлено на страницу администратора), и ничего не отображается в HTML. Есть идеи? – Gezim

+0

Вы можете попробовать использовать [другой action hook] (https://codex.wordpress.org/Plugin_API/Action_Reference), поэтому вместо 'admin_enqueue_scripts' вы можете попробовать' wp_enqueue_scripts' или 'wp_loaded'. –

+0

Спасибо за помощь, @bcole. Я задал еще один вопрос, так как это немного изменило тему вопроса: http://stackoverflow.com/questions/30500327/launching-media-uploader-in-wordpress-from-another-popup – Gezim