更改wordpress sql数据库以获取自定义帖子类型

时间:2015-04-06 14:22:18

标签: php mysql sql wordpress

我想将自定义帖子类型的默认数据库从wp_posts更改为wp_anything_else,我需要具有仅由某些帖子采用的唯一ID。例如,如果我有帖子类型的博客,它将添加到wp_posts,我不希望它,它搞砸一切:( 有没有办法在functions.php或任何插件中制作自定义帖子类型时更改数据库?

来自functions.php的

*代码

add_filter('body_class','bp_conditional_ie_classes');
/*custom post types*/
add_action('init', 'blogs_register');
 
function blogs_register() {
 
    $labels = array(
        'name' => _x('My Blog', 'post type general name'),
        'singular_name' => _x('Blog Item', 'post type singular name'),
        'add_new' => _x('Add New', 'Blog item'),
        'add_new_item' => __('Add New Blog Item'),
        'edit_item' => __('Edit Blog Item'),
        'new_item' => __('New Blog Item'),
        'view_item' => __('View Blog Item'),
        'search_items' => __('Search Blog'),
        'not_found' =>  __('Nothing found'),
        'not_found_in_trash' => __('Nothing found in Trash'),
        'parent_item_colon' => ''
    );
 
    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'menu_icon' => get_stylesheet_directory_uri() . '/admin.png',
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor','thumbnail')
      ); 
 
    register_post_type( 'blogs' , $args );
}

**代码段不起作用,但这只是它允许我添加代码而不会弄乱它的方式

1 个答案:

答案 0 :(得分:0)

WordPress帖子(帖子,页面,自定义帖子,...)旨在代表您网站的单个实体。由于抽象,WordPress对其所有内容类型使用一个单独的表,因此在平均站点请求期间WP必须仅在一个表中查找请求的站点。

在多个表中有多个帖子类型需要在WP的内核中使用不同的查找行为。这就是为什么你想要的东西很复杂。

即使我确定“博客项目”不需要单独的数据库表,但我在wp_posts表中看到的问题是它们没有启用m:n - 它之间的关系条目。对于这样的用例,您可以考虑使用自定义帖子和自定义分类法的组合。

编辑:当然你可以编写或使用(如果有的话)一个插件来处理管理和维护附加表所需的所有东西。但这可能永远不会集成到WordPress以及自定义帖子类型中。