AJAX加载更多和砖石:可以在前端加载admin-ajax.php吗?

时间:2017-01-18 作者:paranza

我正在使用插件Ajax Load More - Infinite Scroll 连同Masonry grid. 例如,我的索引。php包括以下内容:

<?php echo do_shortcode(‘[ajax_load_more post_type=”post” category=”‘ . $wp_query->query_vars[‘category_name’] . ‘” tag=”‘ . $wp_query->query_vars[‘tag’] . ‘” offset=”8″ posts_per_page=”10″ pause=”true” scroll=”false” button_label=”Show me more posts.” transition_container=”false” transition=”none”]’); ?>
一切似乎都很好,但当将博客移动到临时区域上的反向代理之后,我在调用管理ajax时遇到了问题。php来自wp admin(403或ALM文章的很长加载时间),因为Apache中的反向代理规则不允许使用php。事实上,我可以从源页面看到以下内容:

/* <![CDATA[ */
var alm_localize = {“ajaxurl”:”http:\\/\\/siteurl\\/test\\/wp-admin\\/admin-ajax.php”,”alm_nonce”:”0dge8w13b3″,”pluginurl”:”http:\\/\\/homeurl\\/test\\/wp-content\\/plugins\\/ajax-load-more”,”scrolltop”:”false”};
/* ]]> */
ajaxurl仍然是我的WP核心安装文件所在的位置,而pluginurl则是我的homeurl(用户可以访问)。

我有以下问题:

您可以绕过管理ajax的加载吗。直接从wp admin下载php,并将其加载到首页?我找到了使用wp_enqueue_script() 和发件人:

https://codex.wordpress.org/AJAX_in_Plugins

然而,我不确定如何将其与Ajax Load More-Infinite Scroll插件和一起使用。你能帮忙吗?

包含Apache规则以访问特定脚本是否安全

N

EDIT1:

所以,我想到了这个:

//localize the admin-ajax.php
 $localiser = array(
    \'ajaxurl\' => admin_url(\'wp-admin/admin-ajax.php\' ),
  );
  wp_localize_script( "ajax-load-more", "alm_localize", $localiser );

  //Define plugin constant
  define( \'AJAX_PLUGIN\', dirname( __FILE__ ) );

  //Register script
  wp_register_script( \'ajax-load-more\', \'AJAX_PLUGIN\' . \'/core/js/ajax-load-more.js\');
然而,它不仅对管理ajax的实际URL没有影响。php(仍然引用siteurl,而不是当前的home\\u url),但更改了脚本位置:

<script type=\'text/javascript\' src=\'http:\\/\\/siteurl\\/test\\AJAX_PLUGIN/core/js/ajax-load-more.js?ver=4.6.1\'></script>
siteurl在Apache中是反向代理的,你能告诉我我正在尝试实现的目标是否可行吗?如何拥有管理ajax。前端加载了php?我可以把它移到我的主题文件夹吗?我必须修改第三方插件才能工作吗?

非常感谢。

EDIT2:

通过检查web开发人员工具,我可以在控制台中看到此错误:

http://siteurl/test/wp-admin/admin-ajax.php?action=alm_query…anonical_url=http://homeurl/test/ 403 (Forbidden)
这到底是什么意思?什么是alm\\U查询…标准url?

1 个回复
SO网友:Charlie Stanard

您不需要指定wp-admin 在通往admin-ajax.php 文件您可以简单地使用array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ).

$localiser = array(
    \'ajaxurl\' => admin_url(\'admin-ajax.php\' ),
  );

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct