このページの本文へ

フロントエンドエンジニアのblog

有限会社Willさんいん

このページの位置: home タグ: 管理画面

“管理画面” タグの記事(4件)

投稿一覧からログイン中の投稿者以外の投稿を隠すとカスタムフィールドが表示されないことの対策

この記事は2020年4月2日に書かれたものです。情報が古い可能性がありますのでご注意ください。

投稿者権限のユーザーがログインしている時、投稿一覧を表示すると自身の投稿以外の投稿も見えます。編集はもちろんできず、タイトルが表示されているだけですが、下書きの投稿も見えてしまうので見えないようしたいと思い、次のようなコードを functions.php に書きました。

function show_only_authorpost($query) {
  global $current_user;
  if( is_admin() && !current_user_can('edit_others_posts') ){
    $query->set('author', $current_user->ID);
  }
}
add_action('pre_get_posts', 'show_only_authorpost');

これで投稿者は自身の投稿しか表示されなくなりますが、しかし、投稿画面を見ると Advanced Custom Fields (ACF) プラグインで作成したカスタムフィールドが消えていました。

散々悩んだ末、ACF で作成するカスタムフィールドも acf-field-group という一つの投稿タイプであり、管理者が作成しているので、自身の投稿ではないからこれも見えなくなっているのだと気づきました。

そこで、管理画面用のグローバル変数 $pagenow を使い、表示しているページのファイル名(投稿一覧画面は edit.php)による判別を追記しました。

function show_only_authorpost($query) {
  global $current_user;
  global $pagenow;
  if( is_admin() && !current_user_can('edit_others_posts') && $pagenow === 'edit.php' ){
    $query->set('author', $current_user->ID);
  }
}
add_action('pre_get_posts', 'show_only_authorpost');

これで ACF のカスタムフィールドが表示されます。

Welcart で「投稿」を商品のみに使用するためのあれこれ

この記事は2017年8月31日に書かれたものです。情報が古い可能性がありますのでご注意ください。

久々の投稿です。現在、WordPress 用のショッピングカートプラグイン Welcart を使用して、とあるショッピングサイトを構築しています。この Welcart、日本製の無料プラグインで専用のテーマが付いているので、とりあえずショッピングサイトを始めるには比較的簡単に導入できるのですが、オリジナルのテーマを作ってカスタマイズしようとすると、無料であるが故に?いろいろと癖があるようです。

Welcartロゴというわけで、しばらく Welcart ネタが続くと思います。

Welcart の特徴として、商品は WordPress の「投稿」として登録します。商品は「item」配下のカテゴリに属すのですが、「投稿」という枠の中に通常の投稿と商品が混在し、様々な表示を制御するうえでいろいろと面倒なので、「投稿」は商品のみとして扱い、お知らせなどの投稿はカスタム投稿タイプを使うようにしました。

カスタム投稿タイプについては特に何も説明することはないと思いますので、「投稿」を管理画面上でわかりやすくするために施したあれこれについて書きます。

“Welcart で「投稿」を商品のみに使用するためのあれこれ” の続きを読む »

管理画面のメニューから[外観]→[カスタマイズ]を消す

この記事は2017年4月11日に書かれたものです。情報が古い可能性がありますのでご注意ください。

WordPress の管理画面は、以前よく使ってた Movable Type や他の CMS に比べても、とても分かりやすく出来ていると思いますが、さらに使いやすくするために、案件に応じて不要なメニュー項目を削除したり、逆に投稿一覧画面などにはあったら便利という項目を表示させたりしています。

今回、編集者にカスタムメニューの操作権限を与える必要がありました。

まず、通常編集者はカスタムメニューを操作することはできないので、functions.php に以下を記述して操作権限を与えます。

function add_theme_caps(){
  $role = get_role( 'editor' );
  $role->add_cap( 'edit_theme_options' );
}
add_action( 'admin_init', 'add_theme_caps' );

これで編集者にも[外観]メニューが表示されますが、[テーマ]や[カスタマイズ]などのサブメニューは操作してほしくないのでこれらを消す必要がありましたが、この内[カスタマイズ]については他のサブメニューと URL の形式が異なるため、ちょっと工夫が必要でした。

“管理画面のメニューから[外観]→[カスタマイズ]を消す” の続きを読む »

投稿のカテゴリーのラベルを変更する

この記事は2016年12月4日に書かれたものです。情報が古い可能性がありますのでご注意ください。

WordPress の管理画面の「投稿」を「お知らせ」などのラベルに変更する方法はググるとあちらこちらで紹介されています。ここでも紹介しますが(笑)、functions.php 以下のように記述します。

function change_post_menu_label() {
  global $menu;
  global $submenu;
  $menu[5][0] = 'お知らせ';
  $submenu['edit.php'][5][0] = 'お知らせ一覧';
  $submenu['edit.php'][10][0] = '新規追加';
}
 function change_post_object_label() {
  global $wp_post_types;
  $labels = &$wp_post_types['post']->labels;
  $labels->name = 'お知らせ';
  $labels->singular_name = 'お知らせ';
  $labels->name_admin_bar = 'お知らせ';
  $labels->add_new = '新規追加';
  $labels->add_new_item = 'お知らせを追加';
  $labels->edit_item = 'お知らせの編集';
  $labels->new_item = '新規お知らせ';
  $labels->view_item = 'お知らせを表示';
  $labels->search_items = 'お知らせを検索';
  $labels->not_found = 'お知らせが見つかりませんでした';
  $labels->not_found_in_trash = 'ゴミ箱にお知らせは見つかりませんでした';
 }
add_action( 'init', 'change_post_object_label' );
add_action( 'admin_menu', 'change_post_menu_label' );

一方、投稿の「カテゴリー」や「タグ」のラベルを変更する方法はなかなか見つかりませんでしたが、「項目名の変更 管理画面編 WordPress – WordPress Snippet」でそのヒントが掲載されていました。

“投稿のカテゴリーのラベルを変更する” の続きを読む »

page top