我正在使用插件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?