我正在寻找一种获取帖子内容并在div中动态显示的方法。
我的帖子显示在屏幕左侧的列表中,我想在屏幕右侧显示您单击的帖子(我只需要HTML,因为我想应用其他样式而不是single.php文件)。
我在网上搜索了几个星期,但仍然不知道该怎么做,除非我必须使用Ajax(我不完全理解),也许还要使用WP查询?
有没有人对如何做到这一点有想法,并能向我这样的傻瓜解释?
非常感谢!!
编辑:好的,我想出了如何在jQuery中获取帖子ID,并尝试将其发送到Ajax,以便调用帖子内容并在jQuery中获取它。
以下是jQuery部分:
jQuery(".post-link").click(function(){
var $post_id = $this.data(\'id\');
jQuery.post(
ajaxurl,
{
\'action\': \'load_post_content\',
\'the_ID\': $post_id
},
function(response){
jQuery(\'#the-post-content\').html(response);
});
return false;
});
以及功能。php部分:
add_action( \'wp_ajax_load_post_content\', \'load_post_content\' );
add_action( \'wp_ajax_nopriv_load_post_content\', \'load_post_content\' );
function load_post_content() {
$the_post_id = $_POST[\'the_ID\'];
$args = array(
\'p\' => $the_post_id
)
$the_query = new WP_query($args);
if ($the_query->have_posts()) : while ($the_query->have_posts() ) : $the_query->the_post();
$post_content = the_content();
endwhile;
endif;
echo $post_content;
die();
}
我想我越来越近了,但还是不行,你认为我走对了吗?
谢谢
SO网友:Cesar H
好吧,我成功了,我是这样做的:
Jquery部分:
jQuery(".post-link").click(function(){
var post_id = jQuery(this).data(\'id\');
jQuery.post(
ajaxurl,
{
\'action\': \'load_post_content\',
\'the_ID\': post_id
},
function(response){
jQuery(\'#the-post-content\').html(response);
}
);
return false;
});
以及功能。php部分:
add_action( \'wp_ajax_load_post_content\', \'load_post_content\' );
add_action( \'wp_ajax_nopriv_load_post_content\', \'load_post_content\' );
function load_post_content() {
$the_post_id = $_POST[\'the_ID\'];
$args = array(
\'post_type\' => \'post\',
\'p\' => $the_post_id
);
$ajax_query = new WP_Query($args);
$the_content;
if ( $ajax_query->have_posts() ) : while ( $ajax_query->have_posts() ) : $ajax_query->the_post();
$the_content = the_content();
endwhile;
endif;
echo $the_content;
wp_reset_postdata();
die();
}
希望能有所帮助!
SO网友:Alexander Holsgrove
这个问题需要很多基本的帮助,但基本上您希望包括the_content()
对于左侧的每个帖子。将此内容包装为<div class="article-content">..</div>
以便您可以使用javascript轻松访问它。
接下来,需要添加单击处理程序,以便在单击其中一篇文章时在右侧显示文章内容。
如果您有此结构:
<div class="left">
<article>
<h2>My post title</h2>
<div class="article-content"><p>Lorem Ipsum</p></div>
</article>
<article>
<h2>Another post title</h2>
<div class="article-content"><p>Lorem Ipsum</p></div>
</article>
<article>
<h2>Third post title</h2>
<div class="article-content"><p>Lorem Ipsum</p></div>
</article>
</div>
我假设jQuery可用,因此您可以使用以下内容:
$(\'.left article\').on(\'click\', function(event) {
var article_content = $(this).children(\'.article-content\').html()
$(\'.right\').html(article_content);
});
我为你做了一把方便的小提琴。这是非常基本的,但它给了你一些开始的东西:
https://jsfiddle.net/g0bxwy6k/