Как загрузить сообщение Wordpress с помощью Ajax onclick
Я провел часы, читая и пробуя учебники. Я не могу найти решение, которое работает, и я знаю, что это должно быть довольно легко, но я борюсь с AJAX. :(
Я хочу загрузить содержимое сообщения из ссылки в div. Ниже то, что у меня есть. Может кто-нибудь помочь мне со стороной JavaScript? Спасибо!
<ul>
<?php query_posts('post_type=artwork&posts_per_page=-1'); ?>
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<li class="mytab">
<span>
<h3><?php the_title(); ?></h3>
<a href="#"><?php the_post_thumbnail('Project'); ?></a>
</span>
</li>
<?php endwhile; endif; wp_reset_query(); ?>
</ul>
<div id="loadAjaxHere"></div>
Я хочу загрузить этот код в div #loadAjaxHere
<div class="myArtwork">
<h2><?php the_title(); ?></h2>
<div class="text"><?php the_content(); ?></div>
</div>
Спасибо за помощь!!
3 ответов
Ok, Я думаю, что я решил это после долгого процесса проб и ошибок.
Это, кажется, работает, но, пожалуйста, дайте мне знать, если это не правильный способ сделать это
Javascript:
jQuery.noConflict();
jQuery(document).ready(function($){
$.ajaxSetup({cache:false});
$("a.ajax").click(function(){
var post_url = $(this).attr("href");
var post_id = $(this).attr("rel");
$("#tabs").html('<div class="loading">loading...</div>');
$("#tabs").load(post_url);
return false;
});
});
страница, на которой я хочу отобразить содержимое сообщения (я использую пользовательские типы сообщений под названием "artwork":
<ul class="container">
<?php query_posts('post_type=artwork&posts_per_page=-1'); ?>
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<li class="mytab">
<h3><?php the_title(); ?></h3>
<a href="<?php the_permalink(); ?>" rel="<?php the_ID(); ?>" class="ajax"><?php the_post_thumbnail('Project'); ?></a>
</li>
<?php endwhile; endif; wp_reset_query(); ?>
</ul>
<!-- LOAD SINGLE POST CONTENT IN #TABS -->
<div id="tabs"></div>
и одиночный столб " одиночн-художественное произведение.РНР." Примечание: не используйте get_header или get_footer и т. д.:
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<div class="tabcontent" id="tab-<?php the_ID(); ?>">
<?php the_content(); ?>
</div>
<?php endwhile; endif; ?>
спасибо!
просто добавить, если вы хотите загрузить только часть одного сообщения, Вы можете ammend
$("#tabs").load(post_url);
to
$("#tabs").load(post_url + ".tabcontent" );
который просто загрузится во все в div.tabcontent
ответ Барри правильный о возможности загрузки частичной страницы, добавив выражение селектора css в конец URL-адреса. Однако между url-адресом и селектором должно быть пространство:
$("#tabs").load(post_url + " .tabcontent" );
в противном случае строка передается в .load()
будет http://example.com.tabscontent
. Но это должно быть http://example.com .tabscontent
.
кроме того, слово мудро, используя этот метод, остановит jQuery от загрузки и выполнения любого кода внутри <script>
теги. Однако, просто используя .load(post_url);
без селектора успешно загрузить и выполнить код в <script>
теги.
подробнее о здесь.