Intereting Posts

Эквивалент admin.php для общедоступных страниц

Я довольно новичок в WordPress API и не могу найти то, что мне нужно.

Я искал способ создания общедоступных страниц (доступных пользователям без разрешения администратора), подобно методу, используемому при создании страниц на admin.php.

В принципе, у меня есть мое приложение для создания опросов на панели инструментов, но теперь я хочу отобразить фактическое для пользователей.

Я планировал отображать пользовательскую ссылку с помощью shortcode , который в свою очередь откроет окно, содержащее запрошенное обследование, с помощью javascript window.open() . Однако я больше не могу подключаться к базе данных, если я вызываю на пустую страницу в каталоге плагина. В admin.php я мог бы также использовать $.post для ajaxurl , но это доступно только в заголовках admin.

Какой метод я могу использовать для отображения общедоступной страницы, но все же есть большинство функций admin.php?

Solutions Collecting From Web of "Эквивалент admin.php для общедоступных страниц"

Даже если admin-ajax.php и Ajax API были созданы для использования в ajax-запросах, их можно использовать в обычных HTTP-запросах без проблем, просто имейте в is_admin() что is_admin() будет истинным, даже если пользователь не зарегистрирован и запрос делается из интерфейс.

Что вам нужно сделать, так это создать обратный вызов для ajax api. В вашем плагине или functions.php поставьте:

 $survey_action = 'my_survey'; add_action( "wp_ajax_{$survey_action}", 'my_survey_callback' ); add_action( "wp_ajax_nopriv_{$survey_action}", 'my_survey_callback' ); function my_survey_callback() { echo "Welcome to the survey!"; exit(); // always exit() at the end, when using ajax api } 

теперь, когда вы отправляете запрос admin-ajax.php содержащий запрос «action» var, установленный на "my_survey" будет my_survey_callback функция my_survey_callback .

Итак, если теперь вы разместили в адресной строке своего браузера URL-адрес, например

 http://www.example.com/wp-admin/admin-ajax.php?action=my_survey 

сервер ответит «Добро пожаловать в опрос!». ,

Что касается использования этого URL- ajaxurl в javascript, да, глобальная переменная ajaxurl доступна по умолчанию по страницам администратора, однако ничто не мешает вам установить аналогичную переменную на страницах без администратора, используя wp_localize_script .

Предполагая, что файл javascript называется my-script.js и находится в подпапке «js» внутри папки темы, вы можете вставить файл в очередь и передать URL-адрес ajax следующим образом:

 add_action( 'wp_enqueue_scripts', 'add_my_script' ); function add_my_script() { $handle = 'myscript'; wp_enqueue_script( $handle, get_template_directory_uri() . '/js/my-script.js' ); $data = array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ); wp_localize_script( $handle, 'my_script_data', $data ); } 

Используя код выше, внутри my-script.js вас есть доступ к глобальному объекту с именем my_script_data , ajaxurl свойство ajaxurl будет правильным URL-адресом ajax, который вы должны использовать, поэтому вы можете сделать что-то вроде этого:

 window.open( my_script_data.ajaxurl + '?action=my_survey' ); 

И откроется новая вкладка браузера, показывая потрясающий «Добро пожаловать в опрос!». ,