我目前正在创建一个基于X Theme的wordpress页面,该页面利用Cornerstone作为页面构建器。
我正在尝试使用AJAX将页面动态加载到主页面中。为此,我创建了一个脚本,向admin-ajax.php
提出了一个完美无缺的请求。
现在棘手的部分:我添加了一个包含以下代码的插件Code Snippets的PHP代码段:
function get_case() {
global $wpdb;
$postNo = intval( $_POST['case'] );
$post = get_post($postID);
$content = apply_filters('the_content', $post->post_content);
$html = do_shortcode($content)
echo $html;
wp_die();
}
add_action( 'wp_ajax_get_case', 'get_case' );
add_action( 'wp_ajax_nopriv_get_case', 'get_case' );
如果我使用wordpress页面构建器,此代码将返回正确的结果,但如果页面是在Cornerstone中构建的,它只返回主题的短代码。
e.g。
[cs_element_section _id=”1″][cs_element_row _id=”2″]...
我这样做是否正确? do_shortcodes()不应解决这些短代码吗?有没有其他方法可以动态加载子页面?
感谢任何帮助。
答案 0 :(得分:1)
您实际上不需要do_shortcode
(如果这是您的完整代码,则为global $wpdb
),因为这是在 the_content 上自动运行的,假设它没有在其他位置取消挂钩。我们无法看到您的完整设置(插件,主题,自定义代码)进行完全调试,但下面的代码是您在Plain Vanilla WordPress网站上所需要的,以完成您尝试的操作。如果这不起作用,则问题出在设置的其他位置:
function get_case() {
$postNo = intval( $_POST['case'] );
$post = get_post($postNo); // NOTE: Your code has the wrong variable here
$content = apply_filters('the_content', $post->post_content);
exit( $content );
}
add_action( 'wp_ajax_get_case', 'get_case' );
add_action( 'wp_ajax_nopriv_get_case', 'get_case' );