Помогите расширить класс, используемый в плагине Wordpress - PullRequest
0 голосов
/ 01 сентября 2011

Во-первых, условие - я дизайнер, а не разработчик, поэтому, пожалуйста, будьте осторожны;)

Я пытаюсь настроить плагин Wordpress, расширяя класс.В классе немного условно, если код используется одна из двух функций.Вместо этих функций я хочу вызвать две новые (по сути, те же функции, что и у старых, но опять-таки слегка подправленные).

Ранее я делал это успешно, выполняя это:

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, чтобы понять это..

Ответы [ 2 ]

0 голосов
/ 04 сентября 2011

Вы можете взглянуть на Наследование объектов , что, похоже, является проблемой.
Вот еще пара вещей, которые вы можете попробовать ...

  • В wp-config.php , установите WP_DEBUG в true: define('WP_DEBUG', true);
  • Убедитесь, что директива PHP display_errors установлена ​​в 1 , чтовы должны иметь возможность добавить ini_set('display_errors', 1); в ваш wp_config.php файл.

Это поможет увидеть любые ошибки, которые могут быть вызваны и подавлены.

Одна из наиболее распространенных вещей, которые я нашел, как и другие разработчики WP, заключается в том, что многие авторы плагинов / тем не будут устанавливать WP_DEBUG в значение true при написании своего кода, и во многих случаях вы найдете ошибкув сообщениях.

0 голосов
/ 01 сентября 2011

Моя первая мысль: Init не является статичным, поэтому вы не можете вызвать его, используя QA_AJAX_new::init();.В скрипте, который отправляет форма, чтобы попробовать:

$qa_ajax = new QA_AJAX_new();
$qa_ajax->init();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...