全部, 我正在使用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等?
感谢您提供有关这种情况的任何帮助!!
答案 0 :(得分:0)
您可以尝试使用curl获取实际页面,然后插入domdocument,然后从容器div标签中获取内容。
答案 1 :(得分:0)
请尝试以下方式:
remove_filter('wp_get_nav_menu_items', 'strip_tags');
这将删除过滤器以在获取wp_get_nav_menu_items时剥离HTML标记
remove_filter也可以应用于其他方法。