welcart導入時のユーザー権限カスタマイズ

Filed under: functions.php,welcart — kdcs @ 21年7月17日 土曜日

welcartプラグインをインストールし、有効化すると権限グループに「編集者(設定権限無し)」と「編集者(マネジメント権限無し)」の二つが追加される。

メインメニュー サブメニュー 編集者(設定権限無し) 編集者(マネジメント権限無し)
Welcart のユーザー権限
Welcart Shop ホーム ○(権限あり) ○(権限あり)
商品マスター ○(権限あり) ○(権限あり)
新規商品追加 ○(権限あり) ○(権限あり)
基本設定 ×(権限無し) ×(権限無し)
営業日設定 ×(権限無し) ×(権限無し)
配送設定 ×(権限無し) ×(権限無し)
メール設定 ×(権限無し) ×(権限無し)
カートページ設定 ×(権限無し) ×(権限無し)
会員ページ設定 ×(権限無し) ×(権限無し)
システム設定 ×(権限無し) ×(権限無し)
クレジット決済設定 ×(権限無し) ×(権限無し)
Welcart Management 受注リスト ○(権限あり) ×(権限無し)
新規受注見積登録 ○(権限あり) ×(権限無し)
会員リスト ○(権限あり) ×(権限無し)
新規会員登録 ○(権限あり) ×(権限無し)

「マネジメント権限無し」だと商品管理しかできず、「設定権限無し」だと商品と顧客の管理しかできない。
各種設定が操作できないユーザーになってしまう。

WordPressの権限グループにある「編集者」を選択するとwelcartのすべての設定が操作できるようになるが、ユーザーに触ってほしくない項目もある。(システム設定やクレジット決済設定など)

そこで、触ってほしくないメニューを非表示にする方法
以下をfunction.php内に記述し、表示したいメニューをコメントアウトする。

    function remove_menus () {
      if (!current_user_can('administrator')) { // 管理者権限以外
        global $menu;
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_initial'); // 基本設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_schedule'); // 営業日設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_delivery'); // 配送設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_mail'); // メール設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_cart'); // カートページ設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_member'); // 会員ページ設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_system'); // システム設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_settlement'); // クレジット決済設定

        remove_submenu_page('usces_orderlist', 'usces_memberlist'); // 会員リスト
        remove_submenu_page('usces_orderlist', 'usces_membernew'); // 新規会員登録
      }
    }
add_action('admin_menu', 'remove_menus');

マネジメント権限をすべて非表示にする場合はこちら

remove_menu_page('usces_orderlist'); // Welcart Management

WordPress Popular Postsでwelcartの商品メイン画像を使えるようにする

Filed under: functions.php,welcart — kdcs @ 20年9月14日 月曜日

アイキャッチ画像を呼び出す部分をwelcart商品メイン画像に差し替える

//商品画像を取得してPopular postのアイキャッチ画像にする
function my_custom_single_popular_post( $post_html, $p, $instance ){
	global $usces;
	$post_id = $p->id;
	$code =  get_post_meta($post_id, '_itemCode', true);
	$pictid = (int)$usces->get_mainpictid($code);
	$image_src = wp_get_attachment_image_src($pictid);
	$output = '<li class="wpp_list_item cf"><a href="' . get_the_permalink($p->id) . '" class="my-custom-title-class"><img src="' .$image_src[0]. '"/>' . esc_html( $p->title ) . '</a></li>' ;  
	return $output;
}
add_filter( 'wpp_post', 'my_custom_single_popular_post', 10, 3 );

WordPress 閲覧履歴をプラグイン無しで

Filed under: welcart,wordpress — kdcs @ 20年9月11日 金曜日

WordPress 閲覧履歴をプラグイン無しで行う
※cookieを利用

header.phpのheadタグ内に以下を記述
解説ではheadタグ直下に記述しないとエラーになると書いてあったが、タグ内下部に記述しても動作した。

<?php
global $rireki;

//記事ページのみcookieに登録
if(is_single()){

//閲覧履歴用のcookieが存在する場合
if( isset($_COOKIE['rireki']) ){

//配列にする
$rireki = explode(",", $_COOKIE['rireki']);

//cookieに現在の記事IDがあるかどうか調べる
$aruno = in_array($post->ID, $rireki);

//ある場合の処理
if($aruno == true){

//cookieにある現在の記事IDを削除(順番整理&表示除外用)
$rireki = array_diff($rireki,array($post->ID));
$rireki = array_values($rireki);
}

//cookieが5個以上ある場合、4個に減らす
if(count($rireki) >= 5 ){
$set_rireki = array_slice($rireki , 0, 4);
}else{
$set_rireki = $rireki;
}
//cookieに登録
$touroku = $post->ID.','.implode(",", $set_rireki);
setcookie( 'rireki', $touroku, time() + 7776000,'/');

//cookieに現在の記事IDが無い場合の処理
}else{
$touroku = $post->ID;
setcookie( 'rireki', $touroku, time() + 7776000,'/');
}

//記事ページ以外ならcookieの読み込みのみ
}else{
if( isset($_COOKIE['rireki']) ){
$rireki = explode(",", $_COOKIE['rireki']);
}
}
?>

閲覧履歴を出力したい場所に以下記述

<?php
global $rireki;
//履歴が現在の記事を除いて、一つでもある場合
if (!empty($rireki)){

$args = array(
'posts_per_page' => -1,
'post__in' => $rireki,
'orderby' => 'post__in',
);
$the_query = new WP_Query($args);

if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
?>

<!--ここに記事を表示させる処理-->
<?php the_title(); ?>

<?php
endwhile;
endif;
wp_reset_postdata();
}else{ ?>
//cookieが無い場合の処理
<?php } ?>

(続きを読む…)

welcart ユーザー権限のカスタマイズ

Filed under: functions.php,welcart — kdcs @ 20年9月3日 木曜日

WordPressのユーザーを「投稿者」にすると商品マスターと新規商品登録しかできない。
このユーザー権限を変更してwelcartのメニューが使えるようにする。

function.phpに以下を記述
※必要のない項目は除外すればよい

    function remove_menus () {
      if (!current_user_can('administrator')) { // 管理者権限以外
        global $menu;
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_initial'); // 基本設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_delivery'); // 配送設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_mail'); // メール設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_cart'); // カートページ設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_member'); // 会員ページ設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_system'); // システム設定
        remove_submenu_page('usc-e-shop/usc-e-shop.php', 'usces_settlement'); // クレジット決済設定
      }
    }
    add_action('admin_menu', 'remove_menus');

welcart 商品一覧ページに「在庫有り」のみ表示させる

Filed under: functions.php,welcart — kdcs @ 19年12月23日 月曜日

通常は在庫有り無し関係なく公開されている商品を一覧表示するが、これを在庫がある商品だけを表示できるようにする。

チェックボックスにチェックを入れると在庫有り商品のみ表示する

<!-- 在庫ありのみ表示-->
<form method="GET" action="<?php echo get_category_link($cat); ?>">
    <input type="checkbox" name="sort" value="zaiko" onChange="this.form.submit()"
           <?php if(isset($_GET['sort']) == 'zaiko'){ echo 'checked';} ?>>
    <label>在庫有りのみ表示</label>
</form>
<!-- 在庫ありのみ表示(終了)-->

以下をfunction.phpに記述

function my_sort_item( $query ) {
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }
    if ( $query->is_category() ) {
        $sort = isset($_GET['sort']) && is_string($_GET['sort']) ? $_GET['sort'] : '';
        $cat = isset($_GET['cat']) ? $_GET['cat'] : '';
 
        if ( $sort !== 'zaiko' ) {
            return;
        }
 
        $args = array(
            array(
                'key' => '_isku_',
                'value' => '"stocknum";s:1:"0"',
                'compare' => 'NOT LIKE',
            ),
            array(
                'key' => '_isku_',
                'value' => '"stock";s:1:"2"',
                'compare' => 'NOT LIKE',
            ),
        );
 
        $query->set('meta_query' , $args);
    }
}
add_action( 'pre_get_posts', 'my_sort_item', 10, 3);

参照するデータはWordPressデータベース、postmetaのmeta_keyが_isku_の中
stocknum=在庫数 s:1:”0″=在庫0(数値)
stock=在庫ステータス s:1:”2″=在庫ステータスが「売切れ」
0 在庫有り
1 在庫僅少
2 売切れ
3 入荷待ち
4 廃盤
※s:1の1は一桁という意味っぽい
例えば在庫数100ならs:3:”100″ 在庫数10000ならs:5:”10000″になる

サイト内検索

カテゴリー

最近の投稿

↑上に戻る