Welcart で「投稿」を商品のみに使用するためのあれこれ
カテゴリー: WordPress
この記事は2017年8月31日に書かれたものです。情報が古い可能性がありますのでご注意ください。
久々の投稿です。現在、WordPress 用のショッピングカートプラグイン Welcart を使用して、とあるショッピングサイトを構築しています。この Welcart、日本製の無料プラグインで専用のテーマが付いているので、とりあえずショッピングサイトを始めるには比較的簡単に導入できるのですが、オリジナルのテーマを作ってカスタマイズしようとすると、無料であるが故に?いろいろと癖があるようです。
というわけで、しばらく Welcart ネタが続くと思います。
Welcart の特徴として、商品は WordPress の「投稿」として登録します。商品は「item」配下のカテゴリに属すのですが、「投稿」という枠の中に通常の投稿と商品が混在し、様々な表示を制御するうえでいろいろと面倒なので、「投稿」は商品のみとして扱い、お知らせなどの投稿はカスタム投稿タイプを使うようにしました。
カスタム投稿タイプについては特に何も説明することはないと思いますので、「投稿」を管理画面上でわかりやすくするために施したあれこれについて書きます。
「投稿」メニューの「投稿一覧」と「新規追加」を消す
「item」配下のカテゴリに登録した商品は「投稿一覧」には表示されないのですが不要ですし、商品以外登録しないので「新規追加」も不要です。
不要なメニューを削除する方法は様々な記事で紹介されていますね。functions.php に以下を記述してこれらのメニューを削除します。
function remove_menus() {
global $menu;
remove_submenu_page('edit.php', 'edit.php'); // 投稿一覧
remove_submenu_page('edit.php', 'post-new.php'); // 新規投稿
add_action('admin_menu', 'remove_menus');
「投稿」メニューのラベルを変更する
上記の記述で「投稿」メニューのリンク先は自動的に「カテゴリー」に設定されますが、「投稿」というのは変なので、このラベルを変更します。同じく functions.php に以下を記述します。
function change_post_menu_label() {
global $menu;
$menu[5][0] = '商品カテゴリ';
}
add_action('admin_menu', 'change_post_menu_label');
ついでにアイコンも変更します。これは管理画面用の CSS で設定します。後述するダッシュボードの「概要」に表示されるアイコンと合わせて、Welcart Shop などのメニューと同じカートのアイコンにしてみました。
#dashboard_right_now li.post-count a:before,
#dashboard_right_now li.post-count span:before,
#menu-posts .dashicons-admin-post:before,
#menu-posts .dashicons-format-standard:before {
content: "\f174";
}
Adminバーの「新規」から「投稿」を消し、「商品」を追加する
更に、Adminバーの「新規」に「投稿」がありますが、このリンク先が通常の投稿の「新規追加」画面になっています。
この「投稿」を削除して、「新規商品追加」画面にリンクする「商品」を追加します。「新規」のリンク先も「新規商品追加」画面に変更しました。
function mytheme_remove_item( $wp_admin_bar ) {
// 「新規」から項目を削除
$wp_admin_bar->remove_node('new-post');
$wp_admin_bar->remove_node('comments');
// 「新規」に「商品」を追加
$wp_admin_bar->add_menu( array(
'parent' => 'new-content',
'id' => 'new-item',
'title' => '商品',
'href' => admin_url( 'admin.php?page=usces_itemnew' )
));
// 「新規」のURLを変更
$wp_admin_bar->add_menu( array(
'id' => 'new-content',
'href' => admin_url( 'admin.php?page=usces_itemnew' )
));
}
add_action( 'admin_bar_menu', 'mytheme_remove_item', 1000 );
ダッシュボードの「概要」の投稿を商品に変更する
最後に、ダッシュボードの「概要」に投稿や固定ページの件数が表示されますが、このラベルが「○件の投稿」となっており、さらにリンク先が通常の「投稿一覧」画面になっています。
これを「○件の商品」とし、Welcart Shop メニューの「商品マスター」画面にリンクするように変更します。 PHP で変更する方法がわからなかったので jQuery を使いました。以下を functions.php に記述します。アイコンは上述の「投稿」メニューのラベルと合わせて、カートアイコンに変更しています。
function change_dashboad_glance_post() {
?>
<script type="text/javascript">
jQuery( function($){
$('#dashboard_right_now ul li:first-child a').each(function(){
$(this).text($(this).text().replace(/^(\d+)件の投稿$/, '$1件の商品'));
$(this).attr('href', 'admin.php?page=usces_itemedit');
});
});
</script>
<?php
}
add_action( 'admin_print_footer_scripts', 'change_dashboad_glance_post' );
まとめ
Welcart は商品管理の仕組みは独立しているのですが、通常の投稿のカテゴリの中で商品を扱うので、そのままではカテゴリで表示を切り分けるなどの工夫が必要ですし、商品の登録にカスタムフィールドなども使用すると更に管理画面がわかりにくくなってしまいます。
投稿を商品のみに使用し、それに合わせて管理画面を調整することで、ある程度迷いなく使えるようになったのではないかと思います。