经过长时间的研究,我得出的结论是,只有两种选择:
1)让开发人员创建工作(不可行);
2)编辑插件并更改名称和源URL以防止发生任何更新。
在我的所有信念中,我选择了#2选项。我将结束这个问题,但留下这个说明作为任何希望做类似事情的人的参考。
我需要扩展" Bookly"插件并使用一些自定义功能对其进行自定义,并编辑一些现有功能。我从未使用过OO PHP,而不是命名空间,但自从开始这个项目以来,我一直在阅读它。
截至目前,我(不知何故)设法编辑了一些代码以在数据库中创建新列并添加数据,但我无法检索它们。
add_action
钩子; 当我致力于添加专栏时,花了一段时间,但它现在没有遇到麻烦。但是,AJAX钩子是动态添加的,如下所示:
protected function registerWpAjaxActions( $with_nopriv = false )
{
if ( defined( 'DOING_AJAX' ) ) {
$plugin_class = Lib\Base\Plugin::getPluginFor( $this );
// Prefixes for auto generated add_action() $tag parameter.
$prefix = sprintf( 'wp_ajax_%s', $plugin_class::getPrefix() );
if ( $with_nopriv ) {
$nopriv_prefix = sprintf( 'wp_ajax_nopriv_%s', $plugin_class::getPrefix() );
}
$_this = $this;
foreach ( $this->reflection->getMethods( \ReflectionMethod::IS_PUBLIC ) as $method ) {
if ( preg_match( '/^execute(.*)/', $method->name, $match ) ) {
$action = strtolower( preg_replace( '/([a-z])([A-Z])/', '$1_$2', $match[1] ) );
$function = function () use ( $_this, $match ) {
$_this->forward( $match[0], true, true );
add_action( $prefix . $action, $function );
if ( $with_nopriv ) {
add_action( $nopriv_prefix . $action, $function );
}
}
}
}
}
在add_action( $prefix . $action, $function );
行之前,如果这等于wp_die( $prefix . $action );
,我就添加了wp_ajax_bookly_get_customers
,这是从数据库加载数据时调用的挂钩。但是,我无法加载其他列及其数据,尽管因为在我从数据库加载数据之前似乎无法扩展插件。