Я работаю над проектом Wordpress, где мне нужно динамически создавать функцию (в зависимости от того, какой шаблон используется для страницы или сообщения), которая извлекает комментарии каждого страница в вопросе.Ввод правильного PHP-кода в eval() - строка
Скажем, у меня есть страницы в Wordpress с идентификаторами 100, 110, 120, 130, 140, 150, и из них 3 используется шаблон, называемый «блог» (например, 100, 130 и 150).
Так что для того, чтобы восстановить комментарии от этих 3-х страниц с помощью AJAX Мне нужно создать функцию для каждого из них:
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);
для того, чтобы получить страницы, которые я использую петлю-функцию, которая дает мне идентификатор страницы в качестве переменной (в моем случае его $ functionID (также включен в массив моей функции выше).
я уже успел динамически создавать функции с помощью следующих строк кода (я знаю «Eval» не является хорошим выбором, но я не нашел никакого другого решения):
$string = 'function ' . $functionName . "() {
####
}";
eval($string);
Теперь вместо of #### Мне нужно интегрировать фактический функциональный код, начинающийся с «$ defaults = array (...», но, очевидно, он должен быть полностью преобразован в строку - с этим я и борюсь.
Любая помощь будет оценена (опять же, я знаю, с помощью «Eval» не хорошо, но до сих пор я не нашел другого решения для этого)
Включите этот блок кода в 'function x ($ functionID)'. Затем измените на 'function GetComments100() {x (100); } '. Это будет работать? Я ничего не знаю о WordPress. –