在Wordpress中使用PJAX
Using PJAX in Wordpress
我正在尝试将PJAX集成到我的Wordpress安装中,下面是我使用的代码:
<script src="js/jquery.pjax.js"></script>
<script type="text/javascript">
$(function(){
// pjax
$('ul a').pjax('#middlewrap')
})
</script>
我只是跟随他们在PJAX演示页面上的演示,但将他们使用的容器(#main
)替换为我的Wordpress主题,这是#middlewrap
。
我在控制台上没有看到任何奇怪的错误,但是它也不能工作。感谢任何帮助!
看这里:https://github.com/nikolas/pjax-menu希望有帮助:)
编辑: http://wordpress.org/extend/plugins/pjax-menu/
- 下载pjax菜单插件
你下载的存档文件将有一个名为nikolas-pjax-menu-XXXXXXX的文件夹,将该文件夹复制到你的wordpress应用程序的插件文件夹
/your-wordpress-app-root/wp-content/插件/
而重命名为pjax-menu例如
从你的WordPress Dashboard的Plugins菜单中激活插件
编辑javascript文件
/your-wordpress-app-root/wp-content/插件/pjax-menu/pjax_menu.js
容纳您的链接(例如:
'#access .menu a'
)和内容主容器('#main'
)。我在WordPress' Twenty - Eleven theme v1.2上使用了以下代码:
var $j = jQuery; $j(document).ready ( function() { $j('#access .menu a').pjax('#main').live ( 'click', function() { } ); } );
现在当你看到它在一个熟悉的主题上工作时,修改它以适应你的需要
我看了很多方法,但没有找到一个简单或足够灵活的方法来实现一个WordPress主题,即使在布局上有适度的变化。
我把jax jquery插件放在一起就是为了这个目的,它允许我通过给页面上的元素分配一个特定的类来指定要动态加载的元素。它将默认ajax化所有内部链接,并接受一个url片段数组作为参数来排除。当然,它使用pushstate来维护浏览器历史记录,如果历史API不可用,它会优雅地降级。在上面链接的Live Examples部分有一个使用WordPress Bones主题的ajax化WordPress安装的例子。
这个主题花了大约30行代码修改来使用jax进行ajax化。查看文档和下载链接的第一个链接
PJAX菜单是一个很好的概念起点,但您仍然必须手动定义布局(在动态内容div范围内)为您试图支持PJAX的每种页面类型。
pjaxify WordPress的困难在于布局和内容必须看起来相同,无论静态还是AJAX加载。我采用了广泛使用的Thematic主题框架(结构明确,可扩展性强),并将其扩展为支持PJAX: Thematic PJAX
同样,如果您希望使用不同的PJAX主题,我已经发布了开源代码作为参考(github.com/wayoutmind/thematic-pjax),下面的技术将适用:
- 确定布局(例如:模板)用于整个WordPress站点
- 只提取必要的元素(post,侧边栏等)显示在动态div
-
创建专门的PJAX模板,与The Loop挂钩以呈现内容,例如:
// Load after template initialized, so we can use widgets and sidebar add_filter('get_header', 'myPJAXTemplate');
-
如果有必要,您的客户端JavaScript将不得不更新父,动态内容div的非动态节点(例如;
#wrapper
,body
等)响应PJAX加载,所以一切看起来都是正确的(例如。添加/删除CSS类) - 为了方便这一点,你必须发出某种类型的指示器(即。在你的PHP模板
不错的插件。主题的用法示例(以Twenty Fifteen为例):
<标题> 1。自定义模板页在主题内创建文件 page-pjax.php
在admin,创建一个页面并使用这个模板。它只是显示存档链接,并在它们周围显示一个span。
<?php
/**
* Template Name: Pjax Example
*/
get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
$args = array(
'type' => 'daily',
'limit' => '',
'format' => 'html',
'before' => '<span class="a-pjax">',
'after' => '</span>',
'show_post_count' => true,
'echo' => 1,
'order' => 'DESC'
);
wp_get_archives( $args );
?>
<div id="pjax-container"></div>
</main>
</div>
<?php get_footer(); ?>
<标题> 2。添加pjax插件和自定义脚本在 /js
文件夹中添加jquery.pjax.js
和以下脚本 my-pjax.js
。
jQuery(document).ready(function($) {
$(document).pjax('span.a-pjax a, #recent-posts-2 a', '#pjax-container', {fragment:'#main'})
});
<标题> 3。加载jQuery、pjax和自定义脚本In functions.php
。只在模板页加载。
add_action( 'wp_enqueue_scripts', 'load_scripts_so_43903250' );
function load_scripts_so_43903250() {
if ( is_page_template( 'page-pjax.php' ) ) {
wp_register_script( 'pjax', get_stylesheet_directory_uri() . '/js/jquery.pjax.js' );
wp_enqueue_script( 'my-pjax', get_stylesheet_directory_uri() . '/js/my-pjax.js', array('jquery','pjax') );
}
}
<标题> 4。指出h1> anchor是存档链接和具有ID #recent-posts-2
的小部件Recent Posts。为这个测试删除它,或者根据需要添加另一个链接容器。
TARGET在模板上是硬编码的。
选项,片段是必不可少的,因为pjax不加载完整的HTML页面,我们必须告诉它我们想要的目标页面的哪一部分。
在2015,内容在这个div: <main id="main" class="site-main" role="main">
中。根据使用的主题进行调整。
参见pjax注释:https://github.com/defunkt/jquery-pjax#response-types-that-force-a-reload
- 在wordpress一定时间后更改自定义字段
- 如何使MailHandler.php在Wordpress中工作
- Wordpress插件根据需要加载js和css
- 无法再创建Wordpress页面
- Wordpress中带有JQuery Accordion的未定义匿名函数
- 注意:wp_enqueue_script调用不正确.在 Wordpress 调试模式下
- Ajaxify Wordpress网站与社交插件
- 将js添加到wordpress中以突出显示css活动菜单
- Wordpress:替换源(域名)链接
- Wordpress中的Javascript出现匿名函数/引用错误
- 如何在WordPress的头中加载自定义jQuery
- 鼠标光标-用于wordpress网站
- .load ajax无法正常工作whitin wordpress主题
- 如何在没有插件和Wordpress的情况下创建共享社交媒体
- 从新的WordPress媒体上传程序获取JS回调
- 如何使用Wordpress'RESTApi访问本地主机上的数据
- 如何在category.php中执行jquery,这应该适用于类别wordpress中的每个帖子
- wordpress谷歌地图调整大小
- jQuery is not defined - WordPress footer.php
- 在Wordpress中使用PJAX