WooCommerceのパーマリンク設定を取得する

諸事情でWooCommerceから設定できるパーマリンクをとりたかったので覚書。 DBを見る データそのものはwp_optionsに入っている。 パーマリンクの更新を行っていない場合は存在しないかもしれない。 mysql […]

広告ここから
広告ここまで

目次

    諸事情でWooCommerceから設定できるパーマリンクをとりたかったので覚書。

    DBを見る

    データそのものはwp_optionsに入っている。
    パーマリンクの更新を行っていない場合は存在しないかもしれない。

    mysql> SELECT option_name,option_value FROM wp_options WHERE option_name = "woocommerce_permalinks" ;
    +------------------------+--------------------------------------------------------------------------------------------------------------------------+
    | option_name            | option_value                                                                                                             |
    +------------------------+--------------------------------------------------------------------------------------------------------------------------+
    | woocommerce_permalinks | a:4:{s:13:"category_base";s:0:"";s:8:"tag_base";s:0:"";s:14:"attribute_base";s:0:"";s:12:"product_base";s:8:"/product";} |
    +------------------------+--------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    

    WP-CLIで見る

    WP-CLIだとフォーマット指定で見れる

    $ wp option get woocommerce_permalinks --format=json
    {
      "category_base": "",
      "tag_base": "",
      "attribute_base": "",
      "product_base": "/product"
    }
    
    $ wp option get woocommerce_permalinks --format=yaml
    ---
    category_base:
    tag_base:
    attribute_base:
    product_base: /product
    

    変更を見てみる


    管理画面からわかりやすい形でそれぞれカスタマイズしてみる。

    WP-CLIでみる

    $ wp option get woocommerce_permalinks
    array (
      'category_base' => 'p-cat',
      'tag_base' => 'p-tag',
      'attribute_base' => 'p-atts',
      'product_base' => '/shop/%product_cat%',
      'use_verbose_page_rules' => true,
    )
    

    わかりやすい。

    初期設定値について

    パーマリンク設定を全く触っていない状態だと、woocommerce_permalinksという項目がwp_optionsに存在しない。
    では初期設定値はどこにあるのかというと、思いっきりベタ打ちしてある。

    例:https://github.com/woocommerce/woocommerce/includes/class-wc-post-types.php#L105

    		register_taxonomy( 'product_cat',
    			apply_filters( 'woocommerce_taxonomy_objects_product_cat', array( 'product' ) ),
    			apply_filters( 'woocommerce_taxonomy_args_product_cat', array(
    				'hierarchical'          => true,
    				'update_count_callback' => '_wc_term_recount',
    				'label'                 => __( 'Categories', 'woocommerce' ),
    				'labels' => array(
    						'name'              => __( 'Product categories', 'woocommerce' ),
    						'singular_name'     => __( 'Category', 'woocommerce' ),
    						'menu_name'         => _x( 'Categories', 'Admin menu name', 'woocommerce' ),
    						'search_items'      => __( 'Search categories', 'woocommerce' ),
    						'all_items'         => __( 'All categories', 'woocommerce' ),
    						'parent_item'       => __( 'Parent category', 'woocommerce' ),
    						'parent_item_colon' => __( 'Parent category:', 'woocommerce' ),
    						'edit_item'         => __( 'Edit category', 'woocommerce' ),
    						'update_item'       => __( 'Update category', 'woocommerce' ),
    						'add_new_item'      => __( 'Add new category', 'woocommerce' ),
    						'new_item_name'     => __( 'New category name', 'woocommerce' ),
    						'not_found'         => __( 'No categories found', 'woocommerce' ),
    					),
    				'show_ui'               => true,
    				'query_var'             => true,
    				'capabilities'          => array(
    					'manage_terms' => 'manage_product_terms',
    					'edit_terms'   => 'edit_product_terms',
    					'delete_terms' => 'delete_product_terms',
    					'assign_terms' => 'assign_product_terms',
    				),
    				'rewrite'               => array(
    					'slug'         => empty( $permalinks['category_base'] ) ? _x( 'product-category', 'slug', 'woocommerce' ) : $permalinks['category_base'],
    					'with_front'   => false,
    					'hierarchical' => true,
    				),
    			) )
    		);
    

    初期パーマリンクまとめ

    Name Default slug Source
    Category product-category https://github.com/woocommerce/woocommerce/includes/class-wc-post-types.php#L105
    Tags product-tag https://github.com/woocommerce/woocommerce/includes/class-wc-post-types.php#L143
    商品ページ product https://github.com/woocommerce/woocommerce/includes/class-wc-post-types.php#L234

    ※attribute_baseはproductのslug決定処理内にありました。

    まとめ

    WooCommerceで追加される投稿タイプのパーマリンクを取得する場合は、以下の通り。

    WordPress get_option('woocommerce_permalinks');
    WP-CLI $ wp option get woocommerce_permalinks
    MySQL mysql> SELECT option_name,option_value FROM wp_options WHERE option_name = "woocommerce_permalinks";

    もしこれで値が取れない場合は、以下の初期値が適用されている。

    Name Default slug
    Category product-category
    Tags product-tag
    商品ページ product
    広告ここから
    広告ここまで
    Home
    Search
    Bookmark