Во-первых, оговориться Помощь расширения класса - я дизайнер не DEV, поэтому, пожалуйста, будьте нежны;)используется в Wordpress плагин
Я пытаюсь настроить на Wordpress плагин, расширяя класс. В классе в немного условном, если/elseif-ing код вызывает одну из двух функций. Вместо этих функций я хочу назвать два новых (фактически те же функции, что и старые, но опять же, слегка измененные).
Я сделал это успешно, прежде чем делая это:
class MY_CLASS extends MY_NEW_CLASS { ...
Тогда я изменить код в классе и понеслось. Однако в этом случае он, похоже, не работает?
Ниже я вставил код класса, который я положил в мой файл functions.php:
class QA_AJAX_new extends QA_AJAX {
function init() {
add_action('wp_ajax_qa_vote', array(__CLASS__, 'vote'));
add_action('wp_ajax_qa_accept', array(__CLASS__, 'accept'));
}
function vote() {
global $_qa_votes;
$_qa_votes->handle_voting();
$id = $_POST['post_id'];
$post_type = get_post_type($id);
if ('question' == $post_type)
the_question_voting_new($id);
elseif ('answer' == $post_type)
the_answer_voting_new($id);
else
die(-1);
die;
}
function accept() {
global $_qa_votes;
$_qa_votes->handle_accepting();
$id = $_POST['answer_id'];
the_answer_accepted($id);
die;
}
}
QA_AJAX_new::init();
примерно на полпути вниз, вы можете увидеть две новые функции, которые я хочу класс использовать, the_question_voting_new
и the_answer_voting_new
. Я также изменил код в конце, который теперь говорит QA_AJAX_new::init();
- Я не уверен, что я должен это делать, но я пробовал это в обоих направлениях, и ни то, и другое не имеет значения.
Я, очевидно, что-то делаю неправильно (или пытаюсь сделать что-то, что невозможно), что-то, что разработчик обнаружит мгновенно, но мой плохой дизайнерский мозг не знает достаточно о php, чтобы понять это.
Спасибо.
определить «Не работает». Вы получаете ошибки, он делает то, чего вы не ожидаете, или ничего не делает? –
Нет, никаких ошибок. Что, кажется, происходит, так это то, что «новый» класс QA_AJAX_new, по-видимому, не расширяет (переопределяет?) Старый класс QA_AJAX, поскольку старые функции «the_question_voting» и «the_answer_voting» все еще используются - эти функции выводят некоторые html, который я изменил в своих новых версиях, но он все еще показывает старый html. Надеюсь, что это имеет смысл? – Matt