使用AJAX显示页面内容

时间:2012-03-15 00:57:14

标签: php jquery ajax wordpress

全部, 我正在使用wordpress中的用户定义菜单创建侧边菜单。我从以下代码中获取菜单选项(因为我知道用户想要在侧面显示的菜单ID):

$menu_items = wp_get_nav_menu_items($menu_id);
$menu_items = (array)$menu_items;
$output = '<div id="menu_options">';
$output .= '<ol class="tabs">';
foreach($menu_items as $menu){
    $output .= '<li><a href="'.$menu->title.'" class="menu_page_id" id="'.$menu->ID.'">'.$menu->title.'</a></li>';
}
$output .= '</ol>';
$output .= '</div>';
$output .= '<div id="menu_content">This is content</div>';
$output .= '<input type="hidden" value="'.$menu_id.'" id="menu_id">';

return $output;

当用户点击其中一个标签时,我调用AJAX调用尝试使用以下代码获取页面内容:

$('.menu_page_id').click(function(){
    event.preventDefault();
    page_id = $(this).attr("id");
    menu_id = $('#menu_id').val();
    action = "get_page_content";
    $.post(ajaxurl, { page_id: page_id, menu_id: menu_id, action: action }, function(results) {
        results = results.substring(0, results.length - 1);
        $("#menu_content").hide(); 
        $("#menu_content").html(results).fadeIn();
    });
});

这会调用以下函数来返回所点击页面的内容:

function get_page_content(){
    $page_id = mysql_real_escape_string($_POST['page_id']);
    $menu_id = mysql_real_escape_string($_POST['menu_id']);

    $menu_items = wp_get_nav_menu_items($menu_id);
    $menu_items = (array)$menu_items;
    foreach($menu_items as $menu){
        if($menu->ID == $page_id){
            echo $menu->post_content;
        }
    }
}
add_action('wp_ajax_get_page_content', 'get_page_content');
add_action('wp_ajax_nopriv_get_page_content', 'get_page_content');

这一切都很好,它返回页面内容,除了它只是转储结果,实际上不显示我想要的短代码等。说我在WordPress的页面上有以下内容:

[frame_left]<img src="http://www.website.com/wp-content/uploads/2011/10/pic.jpg" alt="" width="300" height="240" />[/frame_left]
<h2 style="margin: 25px 0 0 0;">Person</h2>
<span class="small"><em>Title</em></span>
<p style="text-align: justify;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lacinia justo quis neque dapibus porta...</p>
[button link="http://www.google.com" text="Read More"]
[clear]

以下是我的AJAX请求实际返回的内容:

[frame_left][/frame_left] Title Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lacinia justo quis neque dapibus porta...[button link="http://www.google.com" text="Read More"] [clear]

有没有办法通过Wordpress实际返回页面内容并让它正确显示短代码,html等?

感谢您提供有关这种情况的任何帮助!!

2 个答案:

答案 0 :(得分:0)

您可以尝试使用curl获取实际页面,然后插入domdocument,然后从容器div标签中获取内容。

答案 1 :(得分:0)

请尝试以下方式:

remove_filter('wp_get_nav_menu_items', 'strip_tags');

这将删除过滤器以在获取wp_get_nav_menu_items时剥离HTML标记

remove_filter也可以应用于其他方法。