[英]Wordpress: execute do_shortcode() inside ajax function
我正在實現一個wordpress前端php頁面,該頁面在正文中包含一個超鏈接列表,在頁腳中包含一個wpdatatable。
我想在用戶每次選擇鏈接時重新加載數據表,而這需要通過ajax完成而不重新加載整個頁面。
我到目前為止所做的:
我在\\ wp-content \\ themes \\ Avada \\ functions.php中定義了以下操作:
function tenders_shortcode() {
echo do_shortcode("[wpdatatable id=49 var1=".$_POST['id']." var2=".$GLOBALS['cgv']['archive']."]");
}
add_action('wp_ajax_tenders_shortcode', 'tenders_shortcode'); // add action for logged users
add_action( 'wp_ajax_nopriv_tenders_shortcode', 'tenders_shortcode' ); // add action for unlogged users
在我的主頁中,我進行了如下的ajax調用:
function toggleTable(ministryId) {
$.post( '<?php echo admin_url('admin-ajax.php'); ?>', {
action: "tenders_shortcode",
id: ministryId
}, function(datatable) {
alert("success");
jQuery("#tendersResult").html(datatable)
});
}
其中“ tendersResult”是應保存數據表的div。
問題是返回的數據表的html包含css鏈接標記,並且它始終顯示為“ 0”。
以下是它在瀏覽器中的顯示方式,請參見0文本:
這就是它在檢查器中的顯示方式:
請注意,在發布我的問題之前,我已經做了很多研究,沒有什么可以解決我的問題。 任何幫助表示贊賞!
更新:好的,所以我按照Fencer04的建議添加了wp_die(),但是我現在的問題是do_shortcode()仍然在標題中返回“” css標簽,並且數據表返回為“ display:none”
您需要將功能更改為:
function tenders_shortcode() {
echo do_shortcode("[wpdatatable id=49 var1=".$_POST['id']." var2=".$GLOBALS['cgv']['archive']."]");
wp_die(); //Added
}
add_action('wp_ajax_tenders_shortcode', 'tenders_shortcode'); // add action for logged users
add_action( 'wp_ajax_nopriv_tenders_shortcode', 'tenders_shortcode' ); // add action for unlogged users
如果在函數末尾沒有wp_die(),它將永遠不會返回零以外的任何東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.