問題の各ページのコメントを取得する関数 (ページまたは投稿に使用されるテンプレートの種類に応じて) を動的に作成する必要がある Wordpress プロジェクトに取り組んでいます。
たとえば、Wordpress 内に ID が 100、110、120、130、140、150 のページがあり、そのうちの 3 つが「ブログ」というテンプレートを使用しているとします (例: 100、130、150)。
したがって、AJAX を使用してこれら 3 つのページからコメントを取得するには、それぞれに関数を作成する必要があります。
function GetComments100() { #### }
function GetComments130() { #### }
function GetComments150() { #### }
各ページに対して個別に作成する必要がある関数コードを次に示します (これは (#### の代わりに) 上記の関数ブラケットの間に入ります):
$defaults = array( 'order' => 'DESC', 'post_id' => $functionID, 'post_type' => 'page', 'count' => false );
$comments = get_comments($defaults);
foreach($comments as $comment) :
echo "<div class='table-row' style='margin-bottom:1px'><div class='table-cell-1' style='width:110px;'>".$comment->comment_author.":</div><div class='table-cell-2'style='width:870px;'>".$comment->comment_content." <em><a>".$comment->comment_date." ... ".get_the_title($comment->comment_post_ID)." (".$comment->comment_post_ID.")</a></em></div></div>";
endforeach;
die($results);
ページを取得するために、変数としてページ ID を提供するループ関数を使用します (私の場合、その $functionID (上記の関数の配列にも含まれています))。
次のコード行を使用して、関数を動的に作成することができました (「eval」が適切な選択ではないことはわかっていますが、他の解決策は見つかりませんでした)。
$string = 'function ' . $functionName . "() {
####
}";
eval($string);
#### の代わりに、「$defaults = array(...」で始まる実際の関数コードを統合する必要がありますが、明らかに文字列に完全に変換する必要があります。これは私が苦労していることです。
助けていただければ幸いです(繰り返しますが、「eval」を使用するのは良くないことはわかっていますが、これまでのところ、これに対する他の解決策は見つかりませんでした)