全部, 我在wordpress中的用戶定義菜單中創建了一個側面菜單。我碰到下面的代碼菜單選項(因爲我知道菜單ID用戶想要顯示的側):使用AJAX顯示頁面內容
$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等?
感謝您的任何幫助,你可以擺脫這種情況!
謝謝你。我會在哪裏添加?我應該在第一個wp_get_nav_menu_items之後添加它嗎? – user1048676 2012-03-15 05:16:15
我會在之前添加它。如果您查看方法的[實現](http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/nav-menu.php),您會看到它調用了apply_filters然後返回菜單項。因此,您必須在調用wp_get_nav_menu_items之前刪除strip_tags過濾器。 – bsimic 2012-03-15 11:48:15