在我的wordpress網站上,我有許多基於不同人的動態頁面。我做了一個Ajax調用來獲取數據,生成所有包含在javascript函數中的數據的html,然後將其全部插入到實際頁面上的div中。有了這個,我想顯示最近三篇關於該頁面已加載的特定人員的文章。我發現結果告訴我這個增加的functions.php:將rss訂閱源異步放入動態頁面 - wordpress
//This file is needed to be able to use the wp_rss() function.
include_once(ABSPATH.WPINC.'/rss.php');
function readRss($atts) {
extract(shortcode_atts(array(
"feed" => 'http://',
"num" => '1',
), $atts));
return wp_rss($feed, $num);
}
add_shortcode('rss', 'readRss');
於是我試圖把這個在我的html:
var rsser = '<h2>In the News</h2>' +
'[rss feed="http://website.com/tag/' + tagname + '/feed/" num="3"]';
$('#rssCon').html(rsser);
然而,這似乎並沒有奏效我擔心這可能是因爲它是異步發生的。在這種情況下,「標記名」將是我從Ajax調用中獲得的一段數據。
所以我正在尋找的是一種動態生成異步RSS源的方法。如果可能的話,如果有人能指出我的方向是好的,或者,如果不是,請告訴我!
添加更多的代碼:
var getNewsPerson = function() {
$.ajax({
url:"http://website/api/v1/api?pid=" + personId,
type:"get",
success:function(res) {
return_tagname(res);
processPerson(res);
}
});
};
function processPerson(data) {
var returnedFeedShortcode = return_tagname(data);
var head =
'<div class="headForPerson-nt">' +
'<div class="hfpm-NextPerson-nt">' +
'<div class="hfpm-header-nt">' + data[0][0].FirstName + '</div>' +
'<div class="hfpm-ng-one-nt">' + data[0][0].LastName + '</div>' +
'</div>' +
'<div class="hfpm-News-nt">' +
'<div class="hfpm-header-nt">In the News</div>' + returnedFeedShortcode +
'</div>' +
'</div>';
$('#personPageHead-nt').html(head);
}
$(document).ready(function() {
if($('#personPageHead-nt').length) {
getNewsPerson(location.search);
}
});
function return_tagname(data) {
var tagname = data[0][0].FirstName + '+' + data[0][0].LastName;
return do_shortcode('[rss feed="http://website/tag/' + tagname + '/feed/" num="3"]');
};
我不確定您的意思是「通過AJAX調用處理短代碼」。我創建了return_tagname()並把它返回到AJAX調用生成的html中,但是我在函數的return語句中得到了「wp_rss未定義」。我已經嘗試使用「do_shortcode」和「add_shortcode」,但我添加到functions.php的代碼似乎說使用「wp_rss」,所以我去了。有任何想法嗎? –
由於您使用的是AJAX,因此您必須在functions.php中運行do_shortcode並返回值。您使用的文檔可能不是使用AJAX。發佈AJAX調用的整個JavaScript部分到您的問題,我會確保這是正確的。 – Fencer04
已添加。沒有嘗試添加rss feed所有其他部分的工作,所以我不認爲我在其他地方有一些錯誤,它搞砸了,但它總是可能的。 –