我有一个公共函数可以将分类法附加到自定义帖子类型。当调试设置为true时,我在Wordpress中收到此错误代码:
Notice: Undefined offset: 0 in C:\xampp\htdocs\yanjep-dev\wp-includes\plugin.php on line 925
Notice: Undefined offset: 0 in C:\xampp\htdocs\yanjep-dev\wp-includes\plugin.php on line 943
每次重复9次。
我已将问题隔离到add_action函数:
add_action( 'init',
call_user_func_array( 'register_taxonomy', array( $taxonomy_name, $post_type_name, $args ) )
);
整个功能在这里:
public function add_taxonomy( $name, $args = array(), $labels = array() )
{
if( ! empty( $name ) )
{
// We need to know the post type name, so the new taxonomy can be attached to it.
$post_type_name = $this->post_type_name;
// Taxonomy properties
$taxonomy_name = strtolower( str_replace( ' ', '_', $name ) );
$taxonomy_labels = $labels;
$taxonomy_args = $args;
if( ! taxonomy_exists( $taxonomy_name ) )
{
//Capitilize the words and make it plural
$name = ucwords( str_replace( '_', ' ', $name ) );
$plural = $name . 's';
// Default labels, overwrite them with the given labels.
$labels = array_merge(
// Default
array(
'name' => _x( $plural, 'taxonomy general name' ),
'singular_name' => _x( $name, 'taxonomy singular name' ),
'search_items' => __( 'Search ' . $plural ),
'all_items' => __( 'All ' . $plural ),
'parent_item' => __( 'Parent ' . $name ),
'parent_item_colon' => __( 'Parent ' . $name . ':' ),
'edit_item' => __( 'Edit ' . $name ),
'update_item' => __( 'Update ' . $name ),
'add_new_item' => __( 'Add New ' . $name ),
'new_item_name' => __( 'New ' . $name . ' Name' ),
'menu_name' => __( $name ),
),
// Given labels
$taxonomy_labels
);
// Default arguments, overwitten with the given arguments
$args = array_merge(
// Default
array(
'label' => $plural,
'labels' => $labels,
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'_builtin' => false,
),
// Given
$taxonomy_args
);
// Add the taxonomy to the post type
add_action( 'init',
call_user_func_array( 'register_taxonomy', array( $taxonomy_name, $post_type_name, $args ) )
);
}
else
{
add_action( 'init', array($this, 'add_taxonomy_to_post_type'));
}
}
}
我在本地使用Xampp工作。如果我发表评论,通知就会消失。我知道它与参数的数量有关,但我无法解决它。
感谢任何帮助。
答案 0 :(得分:0)
如您所知,add_action需要两个参数:过滤器(register_taxonomy
和要调用的function name
。
AFAIK,add_action
需要引用实际功能,而您无法传递call_user_func_array
来电。如果您在WP中跟踪代码,您会看到add_action
依次调用add_filter
,而_wp_filter_build_unique_id
又调用register_my_taxonomy
,这是您抛出错误的地方。如果您调查该代码,您将看到它期望一个字符串 - 如在函数名中调用(例如add_action('init', 'register_my_taxonomy'); // Call a standard function
add_action('init', array($this, 'register_my_taxonomy'); // call a public class method
add_action('init', array(__CLASS__, 'register_my_taxonomy'); // call a public static method
),或者是一个类方法的数组(遵循PHP标准方式)。例子:
add_action('init'...)
所以,既然看起来你在班级工作,在你的 add_action( 'init',
array($this, 'register_my_taxonomy')
);
电话中,我建议你更改它以引用一个班级功能:
register_my_taxonomy
在您的课程中,创建功能register_taxonomy
循环您的分类法并直接调用{{1}}。