簡體   English   中英

Wordpress:在ajax函數中執行do_shortcode()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM