wordpress技术文章

wordpress 自定义内容类型 post type,不用插件pods

日期:2020-11-05 阅读:469

wordpress自带以下内容类型:

The following post types are reserved and are already used by WordPress.

post
page
attachment
revision
nav_menu_item
custom_css
customize_changeset
oembed_cache
user_request
wp_block

https://wordpress.org/support/article/post-types

-------------

https://www.codexworld.com/wordpress-custom-post-types-without-plugin/

在主题的function.php加上以下代码:

// Product Custom Post Type
function product_init() {
    // set up product labels
    $labels = array(
        'name' => 'Products',
        'singular_name' => 'Product',
        'add_new' => 'Add New Product',
        'add_new_item' => 'Add New Product',
        'edit_item' => 'Edit Product',
        'new_item' => 'New Product',
        'all_items' => 'All Products',
        'view_item' => 'View Product',
        'search_items' => 'Search Products',
        'not_found' =>  'No Products Found',
        'not_found_in_trash' => 'No Products found in Trash', 
        'parent_item_colon' => '',
        'menu_name' => 'Products',
    );
    
    // register post type
    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'show_ui' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => array('slug' => 'product'),
        'query_var' => true,
        'menu_icon' => 'dashicons-randomize',
        'supports' => array(
            'title',
            'editor',
            'excerpt',
            'trackbacks',
            'custom-fields',
            'comments',
            'revisions',
            'thumbnail',
            'author',
            'page-attributes'
        )
    );
    register_post_type( 'product', $args );
    
    // register taxonomy
    register_taxonomy('product_category', 'product', array('hierarchical' => true, 'label' => 'Category', 'query_var' => true, 'rewrite' => array( 'slug' => 'product-category' )));
}
add_action( 'init', 'product_init' );

-------------------

 

我们在用wordpress做网站时,一般用到的内容类型是page和post.

page就是用于 关于我们,联系我们。

而post一般是用于新闻或博客。

那如果做一个产品页面怎么办。一般也可以放在posts。

但这样就有点乱。

所以要创建一个新的内容类型。

我以前是用插件pods。现在偏向写代码。

使用register_post_type

https://developer.wordpress.org/reference/functions/register_post_type/

在options表里,可以改cpt的名字, register_post_type( 'product2', $args );

wordpress 自定义内容类型 post type

-------------

post表里也要改。

wordpress 自定义内容类型 post type

---------------

所以,如果要改cpt的话,

第一步,先改自定义里的代码register_post_type( 'dmproduct', $args );。然后再提交下固定链接,go to Settings > Permalinks and re-save your Permalinks

第二步。再改post里的记录。在phpmyadmin里或数据库。

https://wpsites.net/wordpress-admin/how-to-rename-a-custom-post-type/

单个记录可以这样:

// Change Post Type Name Function
function WPTime_change_post_type($id, $new_name){
global $wpdb;
$wpdb->query(" UPDATE $wpdb->posts SET post_type = '$new_name' WHERE ID = $id ");
}
WPTime_change_post_type(999, 'movies');

 

------------------

如果要改register_taxonomy( 'productlistww2', 'product2', $args ); } 则要改wp_term_taxonomy表

另外在options表里也要改:(修改子分类对应的id),再提交下固定链接。

wordpress 自定义内容类型 post type

-----------

然后相册字段,可以用插件。https://wordpress.org/plugins/attachments/