私のWordPressのサイトでは、さまざまな人々の周りに数多くの動的ページがあります。私はデータを取得するために、JavaScript関数に含まれているデータをすべてのhtmlを生成し、実際のページのdivにすべてを挿入するAjax呼び出しを行います。これで、ページがロードされた特定の人に関する最新の3つの記事を表示したいと思います。私はの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フィードを追加しようとすると、他のすべての部分がうまく動作しないため、別の場所でエラーが発生しているとは思わないが、それはいつでも可能です。 –