无法重新声明create_post_type()(先前已声明

时间:2018-08-31 20:45:10

标签: php wordpress

在一次wp安装中运行2个非常相似的插件。当尝试激活一个新的时,出现“无法重新声明先前声明的”错误。错误是指类似的插件之一。但是帖子类型实际上是不同的(代码如下)。服务器缓存已清除。

新帖子类型

function create_post_type() {
  register_post_type( 'Related',
    array(
      'labels' => array(
        'name'               => 'Related',
        'singular_name'      => 'Related Unit',
        'menu_name'          => 'Related Units',
        'name_admin_bar'     => 'Related Unit',
        'add_new'            => 'Add New',
        'add_new_item'       => 'Add New Unit',
        'new_item'           => 'New Unit',
        'edit_item'          => 'Edit Unit',
        'view_item'          => 'View Unit',
        'all_items'          => 'All Units',
        'search_items'       => 'Search Units',
        'parent_item_colon'  => 'Parent Units:',
        'not_found'          => 'No units found.',
        'not_found_in_trash' => 'No units found in Trash.'
      ),
      'public' => true,
      'has_archive' => true,
      'rewrite' => true,
      'hierarchical' => true,
      'supports' => array( 
        'title', 
        'revisions'
    ),
    )
  );
  register_taxonomy("RelatedPlacements", array("Related"), array(
    "hierarchical" => true,
    "label" => "Related Placements",
    "singular_label" => "Related Placement",
    "rewrite" => true
    ));
}

add_action( 'init', 'create_post_type' ); 

一个错误是指

function create_post_type() {
  register_post_type( 'Ads',
    array(
      'labels' => array(
        'name'               => 'Ads',
        'singular_name'      => 'Ad',
        'menu_name'          => 'Ads',
        'name_admin_bar'     => 'Ad',
        'add_new'            => 'Add New',
        'add_new_item'       => 'Add New Ad',
        'new_item'           => 'New Ad',
        'edit_item'          => 'Edit Ad',
        'view_item'          => 'View Ad',
        'all_items'          => 'All Ads',
        'search_items'       => 'Search Ads',
        'parent_item_colon'  => 'Parent Ads:',
        'not_found'          => 'No ads found.',
        'not_found_in_trash' => 'No ads found in Trash.'
      ),
      'public' => true,
      'has_archive' => true,
      'rewrite' => true,
      'hierarchical' => true,
      'supports' => array( 
        'title', 
        'revisions'
    ),
    )
  );
  register_taxonomy("Placements", array("ads"), array(
    "hierarchical" => true,
    "label" => "Placements",
    "singular_label" => "Placement",
    "rewrite" => true
    ));
}

add_action( 'init', 'create_post_type' );

我只是看不到它们有什么不同

1 个答案:

答案 0 :(得分:2)

您无法在PHP中定义两个具有相同名称的函数。更改函数名称之一:

function create_related_post_type() {
   ...
}

add_action( 'init', 'create_related_post_type' );

由于Wordpress的过程代码库和潜在的插件冲突,通常建议给函数添加一个唯一的前缀,例如pluginname_create_post_type