使用AJAX而不复制输出文件

时间:2013-11-22 00:39:30

标签: php jquery ajax wordpress

我正在使用WordPress,我有一个显示一些博文的短代码。显示这些代码有很多行。我知道AJAX我可以指定我想要使用的文件,而我过去唯一的方法是基本复制文件的数据显示部分,以便正确填充div。

这可能是一个愚蠢的问题,但有一种更简单的方法,所以我不必复制文件内容。由于这是WordPress中的短代码,我不认为我可以将它作为显示输出的函数。

我试过这个: 我只是做了一些测试,短代码函数看起来像这样:

function blog_shortcode_by_zip($atts) {
    display_blog_shortcode($atts);
}

然后我在页面的下方定义了这个功能:

function display_blog_shortcode($atts){
    echo "it works";
    echo '<a href="google.com" id="click_me">ljasfdj</a>';
    echo '<div id="display_here"></div>';
}

此工作正常并正确显示数据。我知道有一个AJAX函数,我试图调用相同的函数:

add_action('wp_ajax_show_blog', 'show_blog');
function show_blog() {
    global $wpdb; // this is how you get access to the database
    diplay_blog_shortcode('value');
}

但是,当我执行此操作时,AJAX会返回一个致命错误并说明display_blog_shortcode未定义。它如何在文件中工作但不使用AJAX?

1 个答案:

答案 0 :(得分:1)

如果是WP短代码,您可以将the_content过滤器应用于包含短代码的内容 - 这将触发您的短代码处理程序,并将用完整输出替换短代码。

您可以在发布内容之外使用此内容,作为AJAX调用的一部分。

您的AJAX调用的PHP文件可能包含以下内容:

<?php

// If you use this code outside of WordPress, you'll need to pull in WP core
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

$content = '[YOURSHORTCODE]';
$content = apply_filters('the_content', $content);

echo $content;