使用AJAX而不复制输出文件


Using AJAX without duplicating the output files

我正在使用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的?

如果是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;