首先,附带条件 - 我是设计师而不是开发者,所以请温柔;)
我试图通过扩展一个类来调整Wordpress插件。在类中有条件的if / 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的了解并不充分。
感谢。
答案 0 :(得分:0)
我首先想到的是Init
不是静态的,因此您无法使用QA_AJAX_new::init();
来调用它。在表单发布的脚本中尝试:
$qa_ajax = new QA_AJAX_new();
$qa_ajax->init();
答案 1 :(得分:0)
您可能会查看Object Inheritance,这似乎是问题所在 以下是您可能会尝试的其他一些事情......
define('WP_DEBUG', true);
display_errors
指令设置为 1 ,您应该能够将ini_set('display_errors', 1);
添加到 wp_config.php 文件中这有助于查看可能被触发和抑制的任何错误。
我和其他WP开发人员发现的最常见的事情之一是,在编写代码时,很多插件/主题作者都不会将WP_DEBUG设置为 true ,很多时候你会在邮件中找到您的错误。