我要发一个小提琴,因为它更容易解释。
$("#focus a").mouseenter(
function(){
this.style.color = '#cc0000';
$('<p>content from post that the hovered-over link points to.</p>').replaceAll('#child p');
}
);
如何访问该帖子内容链接所引用的帖子信息?我想使用该信息将该帖子内容加载到另一个div中,但我不知道从哪里开始(我可以使用什么WordPress PHP?JS?)。任何事情,甚至因为愚蠢而尖叫我都会有所帮助!
澄清小提琴中发生的事情,
谢谢!
编辑: 我也相信我应该使用
this.getAttribute('href')
获取链接到帖子,但我不确定在获得引用后我应该(或可以!)使用什么wp函数来获取该帖子的内容。
答案 0 :(得分:2)
您可以使用jQuery ajax
执行此操作,并按照我的说明一步一步完成。
1. 在主题文件夹js
中创建一个文件夹,假设您的主题文件夹是二十一页,那么它应该是
http://yourDomain.com/wp-content/themes/twentytwelve/js
2。在js folder
中创建一个文件,并将其命名为myScript.js
3。在functions.php
文件中添加
add_action('wp_enqueue_scripts','my_theme_scripts_function');
function my_theme_scripts_function() {
wp_enqueue_script('myScriptHandler', get_stylesheet_directory_uri() . '/js/myScript.js');
wp_localize_script( 'myScriptHandler', 'myAjax', array( 'ajaxUrl' => admin_url( 'admin-ajax.php' ) ) );
}
4. 。在functions.php
function do_myAjaxFunction()
{
$post_id = url_to_postid($_POST['post_url']);
$post = get_post( $post_id, OBJECT);
$response = apply_filters( 'the_content', $post->post_content );
echo $response;
die();
}
add_action( 'wp_ajax_nopriv_myAjaxHandler', 'do_myAjaxFunction' );
add_action( 'wp_ajax_myAjaxHandler', 'do_myAjaxFunction' );
5. 现在在myScript.js
文件中添加以下代码
$('.your_post-entry a').click(function(e){
e.preventDefault();
var currentUrl = $(this).attr('href');
$.ajax({
type : 'post',
url : myAjax.ajaxUrl,
data: {
action: 'myAjaxHandler',
post_url: currentUrl
},
success: function(data){
$('#ajax_post').html(data);
}
});
});
将上面的代码放在jQuery(function($){...});
函数(jQuery的ready事件)中。它完成了!现在,您可以使用ajax
获取帖子内容。
当你点击元素中的任何链接(假设一个div),类名your_post-entry
时,点击事件将触发(你知道)并且它会向{{1}发送一个帖子请求因为http://yourDomain.com/wp-admin/admin-ajax.php
包含myAjax.ajaxUrl
,而我们的脚本(myAjax对象)通过我们url
中的wp_localize_script
可用。 functions.php
请求还会向ajax
数组发送一些变量,其中$_POST
和action
,post_url
包含post_url
帖子和permalink
将运行我们的admin-ajax.php
,它会获取帖子的内容并将其发送回浏览器,因为我们使用do_myAjaxFunction
添加了操作,告诉{{1}每当您收到add_action( 'wp_ajax_myAjaxHandler', 'do_myAjaxFunction' )
操作的ajax请求时,请运行WordPree
函数。第一个myAjaxHandler
是do_myAjaxFunction
,即使用户未在wordpress后端登录,也需要使ajax请求正常工作,如果用户没有add_action
ajax请求将无效尚未登录。请注意wp_ajax_nopriv_myAjaxHandler
回调中的wp_ajax_nopriv_myAjaxHandler
行,它会将返回的数据插入$('#ajax_post').html(data);
success
element/div
,因此,请确保在点击事件中使用适当的id
和ajax_post
名称。
如果您不想对每个帖子使用id
,那么您可以为要使用ajax的class
添加/生成ajax
,例如class
1}}在点击事件中你可以使用
post links
现在您知道如何做到这一点,所以如果您需要这样做,我认为您可以使用ajaxPost
而不是$('.your_post-entry a.ajaxPost').click(function(e){ ... });
来执行此操作(您举了一个mouseenter示例)。
一些有用的链接: wp_ajax_和how-to-use-ajax-in-wordpress