Использование jQuery post () или load () в плагине Wordpress - PullRequest
0 голосов
/ 21 октября 2010

Я разрабатываю плагин и у меня есть быстрый вопрос ... Сначала я разработал свой плагин как отдельную «веб-страницу» и теперь интегрирую (упаковываю) его в плагин WP. До WP все работало корректно и теперь работает почти правильно, но я столкнулся с интересной проблемой. В любом случае, на мой вопрос ... есть ли какая-то проблема в использовании функции jQuery .post() из боковой панели WP? Я пытаюсь делать такие вещи ...

 jQuery.post("php/draw_calendar.php",
 {month: currentMonth, year:
 currentYear - 2000, days:
 daysInMonth}, function(data){
      jQuery("#Calender").html(data);
      jQuery( "#eventDialog" ).dialog({ autoOpen: false, resizable: false,
 width: 300, minHeight: 200 });
    jQuery( "#eventDialog" ).bind(
 "dialogopen", function(event, ui) {});
   });

Все в jQuery работает отлично, за исключением того, что кажется, что данные, возвращаемые из файла, никогда не добавляются в HTML, и все, что возвращается, это «Это переменная».

Я думаю, что это может иметь какое-то отношение к тому, как пути могут работать в jQuery и Wordpress, но я немного растерялся из-за того, что делать. Я не видел никакой другой информации об этом в Интернете, поэтому, возможно, я просто делаю что-то глупое.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 октября 2010

Вы должны выбрать правильный каталог для вашего WP Plugin с WP API ( bloginfo () ) ... что-то как:

jQuery.post("<?php bloginfo('wpurl');  ?>/wp-content/plugins/calendar/draw_calendar.php",

Как указывает Брэд, вам нужно использовать wpurl. Также, как писал awats, вы можете использовать константу WP для каталога плагинов. Я не совсем уверен, как это отформатировано:

jQuery.post("<?php echo PLUGINDIR;  ?>/calendar/draw_calendar.php",

Также со страницы определения плагинов и страниц контента похоже, что вы можете использовать plugin_basename();:

jQuery.post("<?php echo plugin_basename();  ?>/calendar/draw_calendar.php",
0 голосов
/ 22 октября 2010

Ваш плагин работает на стороне администратора?В этом случае вы можете использовать встроенный процессор AJAX.Так что вы могли бы сделать что-то вроде этого ...

<?php 

   add_action('wp_ajax_update_calender', 'update_calender_callback');

   function update_calender_callback(){
     //perhaps include your calender.php script here
     // and run the operations you need...
   }

  //break the php here in the plugin file and then your js is entered after ?>
<script type="text/javascript">
var calData = {
 month: currentMonth,
 year: currentYear - 2000, 
 days: daysInMonth 
 action: update_calender //notice we send an action here...
}

//The callback function I just copied and pasta from what you had...
jQuery.post('ajaxurl',calData,function(data){
      jQuery("#Calender").html(data);
      jQuery( "#eventDialog" ).dialog({ autoOpen: false, resizable: false,
 width: 300, minHeight: 200 });
    jQuery( "#eventDialog" ).bind(
 "dialogopen", function(event, ui) {});
   })
</script>   

http://codex.wordpress.org/AJAX_in_Plugins

Или для менее элегантного решения для всех js, которое вы можете попробовать ...

jQuery.post(location.protocol+"//"+location.hostname+"/wp-content/plugins/yourpluginname/scriptname", data, function...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...