gpt4 book ai didi

Wordpress comments_template 不适用于 AJAX 调用

转载 作者:行者123 更新时间:2023-12-02 08:56:45 28 4
gpt4 key购买 nike

在使用 AJAX 的主题函数中调用 comments_template 时,我一直遇到问题。它在第一次页面加载时被调用时工作正常,但在 AJAX 期间调用时则不然。我在想缺少了一些包含,但我对这里的了解还不够多,无法理解是什么。

这是我的主题的 functions.php 文件中的函数代码的本质。 (整个事情要长得多)

function displayLargePost ($postid) {

// get the submitted postid parameter if set.
if (!$postid) {
$postid = $_REQUEST['postID'];
}

$myposts = new WP_Query();
$myposts->query( 'p='.$postid );
while( $myposts->have_posts() ) : $myposts->the_post();

// some formatting stuff is done then output post content

the_content();

// some more formatting then output the comments template (doesn't work with AJAX)

comments_template();

}

`

同样,该函数在运行 AJAX 调用时执行,除 comments_template 输出“0”外,一切正常。

感谢您的帮助!

更新 - 在使用 include(comments.php) 找出解决方法后的整个函数

function displayLargePost ($postid) {

if ($_REQUEST['action'] == "displayLargePost") {
require_once("../wp-load.php");
global $wpdb;
$postid = $_REQUEST['postID'];
$ajax = 1;
}

$myposts = new WP_Query();
$myposts->query( 'p='.$postid );
while( $myposts->have_posts() ) : $myposts->the_post();

?>

    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?> data-postid="<?php the_ID(); ?>">

<div class="post-meta-mix clearfix">

<h3 class="post-title post-title-mix"><?php the_title(); ?></h3>

<p class="post-info ">
<span>By <?php the_author_posts_link(); ?></span>
<?php the_time( 'l F j, Y' ) ?>
</p>

</div><!-- End div class="post-meta clearfix" -->

<div class="socialdiv socialdiv-mix">

<?php if (function_exists('tweetmeme')) echo tweetmeme(); ?>

<div class="sharebutton">
<fb:share-button href="<?php the_permalink(); ?>" type="button"></fb:share-button>
</div>
<div class="likebutton">
<fb:like href="<?php the_permalink(); ?>" layout="button_count" show_faces="false" width="auto"></fb:like>
</div>

<?php if( get_post_meta( $myposts->post->ID, "itunes_link", true ) ) : ?>
<div class="ituneslink">
<?php echo get_post_meta( $myposts->post->ID, "itunes_link", true ) ?>
</div>
<?php endif; ?>

<?php if (get_post_meta( $myposts->post->ID, "track_number", true ) != '-1') : // Don't put the link to add to playlists on the mix intro post
if (function_exists('wpfp_link')) { ?>
<div class="favplaylistlink">
<?php wpfp_link(); ?>
</div>
<?php } endif; ?>

</div><!-- socialdiv -->

<div class="post-box"><!--Single ID post box-->

<div class="page-content clearfix"><!--Single ID post box-->

<div class="clearfix monthlymix-box"><!--Single ID post box-->

<?php if( get_post_meta( $myposts->post->ID, "image_value", true ) ) : ?>

<div class="post-image-inner post-image-mix left">
<img src="<?php bloginfo( 'template_directory' ); ?>/timthumb.php?src=<?php echo get_post_meta( $myposts->post->ID, "image_value", true ); ?>&amp;w=300&amp;h=300&amp;zc=1" alt="<?php the_title(); ?>" />
</div>

<?php endif; ?>


<?php if( get_post_meta( $myposts->post->ID, "download_url", true ) ) : ?>

<p>
<a href="<?php echo get_post_meta( $myposts->post->ID, "download_url", true ) ?>" target="blank" type="image/png" >Download this Track</a>
</p>

<?php endif; ?>


<?php
// OUTPUT POST CONTENT
// Remove the YouTube embedded within post, add p tags to keep form
$text = preg_replace('/<center>httpv.*/','',get_the_content());
$text = str_replace("\n", "</p><p>", $text);
echo '<p>'.$text.'</p>';
?>

<br />

</div><!-- End div class="clearfix" --><!--Single ID post box-->

</div><!-- End post-content clearfix --><!--Single ID post box-->

</div><!-- End post-box --><!-- Single ID post box-->

<div class="monthlymix-bottom">
<div class="video-mix">
<div class="post-meta clearfix">
<h3 class="post-title-small left">Video</h3>
<p class="post-info right">
</p>
</div><!-- End post-meta -->
<div class="youtube-mix">
<?php
if (get_post_meta( $myposts->post->ID, "youtube_url", true )) :
$video = get_post_meta( $myposts->post->ID, "youtube_url", true );
$video = preg_replace('/watch\?v=/', 'v/', $video);
?>
<span class="youtube">
<object width="400" height="325">
<param name="movie" value="<?php echo $video; ?>" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="<?php echo $video; ? >&amp;color2=febd01&amp;fs=1&amp;showinfo=0" type="application/x-shockwave-flash" allowfullscreen="true" width="400" height="325"></embed>
<param name="wmode" value="transparent" />

                </div>
</div>
<div class="commentbox-mix">
<?php
//comments_template();
include('comments.php');
?>
</div>
</div>

</div><!-- End post ID-->

<?php
endwhile; // end of while have posts from new WP Query
wp_reset_query(); // Restore global post data stomped by the_post().

if ($ajax) {
die;
}

}

add_action('wp_ajax_displayLargePost', 'displayLargePost', 10, 1);
add_action('wp_ajax_nopriv_displayLargePost', 'displayLargePost', 10, 1);

最佳答案

comments_template 仅适用于帖子和单页。要使其正常工作,您需要像这样使用 $withcomments = true:

global $withcomments;

$withcomments = true;
comments_template();

我有一个类似的问题并在这个 post 中解决了它

关于Wordpress comments_template 不适用于 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299093/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com