質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

2834閲覧

プラグインwelcartを使用した際のWordpressの管理画面表示について

alesta

総合スコア16

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/04/08 09:11

編集2017/04/09 02:44

###前提・実現したいこと
Wordpressで小規模ECサイトを作っています。
プラグイン「welcart」を使用して、管理画面に「welcart shop」サブメニューに「商品マスター」という項目があるのですが、こちらのページでデフォルトでは追加した商品が全てのユーザー表示されていますが、これを管理者を除いて他の権限では自分が追加した商品のみ表示させたいと考えています。

###発生している問題
以下のコードで投稿者権限の管理画面の投稿一覧では自身が投稿したもののみ表示させることはできるのですが、welcartの商品マスターのページではそれが反映されていません。

###該当のソースコード

PHP

1/*-------------------------------------------*/ 2/* 投稿者の投稿(所有)のみにアクセス限定 3/*-------------------------------------------*/ 4function show_owned_posts_only( $views ) { 5 6 unset($views['all']); // すべて 7 unset($views['draft']); // 下書き 8 unset($views['publish']); // 公開済み 9 unset($views['pending']); // 保留中 10 unset($views['trash']); // ゴミ箱 11 12 return $views; 13} 14add_filter('views_edit-post', 'show_owned_posts_only'); /* カスタム投稿の場合は「edit-post」の「post」部分をカスタム投稿のスラッグに変更 */ 15/*-------------------------------------------*/ 16/* 投稿が0件でも他者の投稿一覧が見えないように 17/*-------------------------------------------*/ 18function hide_other_posts($wp_query) { 19 global $current_screen, $current_user; 20 21 if($current_screen->id != "edit-post") { 22/* カスタム投稿の場合は「-post」の「post」部分をカスタム投稿のスラッグに変更 */ 23 return; 24 } 25 26 if(!$current_user->roles[0] == "administrator") { /* 対象とするユーザーグループを指定 */ 27 return false; 28 } 29 30 $wp_query->query_vars['author'] = $current_user->ID; /* 対象とするユーザーグループを指定 */ 31} 32add_action('pre_get_posts', 'hide_other_posts'); 33 34/*-------------------------------------------*/ 35/* ここからwelcart用に記述したコード 36/*-------------------------------------------*/ 37 38// 自分が投稿した商品だけ管理画面(商品マスターのページ)で表示する 39function filter_other_post( $wp_query ) { 40 global $pagenow, $current_user; 41 42 if($pagenow != "admin.php?page=usces_itemedit") { 43 return; 44 } 45 46 if($current_user->roles[0] == "administrator") { 47 //管理者はすべて閲覧可能 48 return; 49 } 50 51 $wp_query->query_vars['author'] = $current_user->ID; 52} 53add_action('pre_get_posts', 'hide_other_posts');

###試したこと
自身の投稿を表示させないコードを探してfunction.phpに記述した。
参考サイト1
参考サイト2
###補足情報(言語/FW/ツール等のバージョンなど)
PHP:5.5.38
wordpress:4.7.3
welcart:Version 1.9.1.1612261
theme:Welcart Basic バージョン: 1.2.4
商品マスターのスラッグ: usces_itemedit

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/04/08 10:47

質問文に提示されたコードは、投稿(post)用のコードですよね? Welcart用に書いて試されたコードについても、記載してください。
alesta

2017/04/08 12:53

コメントありがとうございます。投稿をカスタマイズしたコードの下にwelcart用で試したコードも記載していました。見ずらくてすみません。編集し直しました。
guest

回答1

0

補足ありがとうございます。

filter_other_postをなんらかのアクションかフィルターにフックする処理が抜けているように見えるので、追加してください。

また、show_owned_posts_onlyとhide_other_postsはWelcartで作成する商品のカスタム投稿タイプ用に書き直す必要があるのではないでしょうか。

投稿2017/04/08 14:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alesta

2017/04/09 03:05

回答ありがとうございます。 filter_other_postのところはadd_actionの処理を追加する点は分かりました。 一点だけもう少し教えていただきたいのですが、 show_owned_posts_onlyとhide_other_postsのところは[posts]の部分が通常投稿のタイプ(固定ページだとpage)でそこをカスタム投稿のスラッグ名に書き換えるということでよろしいのでしょうか。
退会済みユーザー

退会済みユーザー

2017/04/09 03:13

いいえ。関数名を変更しても意味がありません。 コードにコメントが入っている箇所がありますので、その箇所をカスタム投稿タイプ用に書き換えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問