【WordPress】社内用ナレッジ(wiki)の作り方

AlmaLinux9
このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。

社内で業務に役立つtipsを共有できると良いなと思いました
定期的に更新したり、検索の利便性を考えるとExcelやWordで作成してファイルサーバーで管理するよりもwebページを内部公開する形で構築したほうが良いと考えました

すでにwebサーバーとして運用しているサーバーに、WordPressをインストールして上記のようなシンプルな社内用ナレッジを作ってみました

麺女
麺女

サーバーさえ用意できれば、無料で作ることができますよ!

要件

どのような社内ナレッジを作成したいのか、ざっくり決めておきます

  • 記事の検索ができる
  • トップページはカテゴリー一覧を表示する
  • AチームとBチームのユーザーがおり、閲覧はどちらのチームの投稿でも見ることができるが、編集と公開は自分のチームの投稿のみ可能とする

環境

  • AlmaLinux9.6を使用
  • Apache2.4インストール済
  • PHP 8.3とphpMyAdminインストール済
  • mariadb10.11インストール済
  • ワイルドカード証明書取得済

社内ナレッジのサイトURLは「knowledge.xxx.com」とします

データベース作成

phpMyAdminにログインします

データベースとユーザーを作成します
データベース名およびユーザー名は今回「wordpress」とします

ユーザーアカウント追加画面で、画面のように「同名のデータベースを作成してすべての権限を与える。」にチェックを入れるとデータベースを同時作成できて楽です

WordPressインストール

サーバーにSSH接続します

WordPressの最新版をダウンロードします

# wget http://ja.wordpress.org/latest-ja.zip
# unzip latest-ja.zip

解凍してできたwordpressディレクトリをドキュメントルート下へ移動します
また、zipファイルも忘れないうちに削除しておきます

下記に指定しているドキュメントルートは環境に合わせて変更してください

# mv wordpress /var/www/html/
# rm latest-ja.zip

WordPressデータベース設定

データベースの紐づけと認証キーの設定を行います

ユーザー名とパスワードは環境によって変更してください
認証キーは下記サイトを使用して、ランダムな文字列を作成して入れましょう
https://api.wordpress.org/secret-key/1.1/salt

# cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
# vi /var/www/html/wordpress/wp-config.php

/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** Database username */
define( 'DB_USER', 'wordpress' );

/** Database password */
define( 'DB_PASSWORD', 'xxxxxxxxxxxxx' ); 

/**#@+
 * Authentication unique keys and salts.
 *
 * Change these to different unique phrases! You can generate these using
 * the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
 *
 * You can change these at any point in time to invalidate all existing cookies.
 * This will force all users to have to log in again.
 *
 * @since 2.6.0
 */

define('AUTH_KEY',         'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('SECURE_AUTH_KEY',  'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('LOGGED_IN_KEY',    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('NONCE_KEY',        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('AUTH_SALT',        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('SECURE_AUTH_SALT', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('LOGGED_IN_SALT',   'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('NONCE_SALT',       'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

Apache設定

バーチャルホストの設定とSSL証明書の設定を実施します
また、社内のみに公開、つまりは外部に公開したくないのでアクセス制限を忘れずに設定します

# vi /etc/httpd/conf.d/wordpress.conf
<VirtualHost *:80>
    ServerName knowledge.xxx.com
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName knowledge.xxx.com
    DocumentRoot /var/www/html/wordpress
    DirectoryIndex index.html index.php

    SSLEngine On
    SSLHonorCipherOrder On
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!EXP:!LOW:!aNULL:!eNULL:!ADH:!DSS:!MD5:!PSK:!SRP:!RC4:!3DES
    SSLCertificateFile /etc/letsencrypt/live/knowledge.xxx.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/knowledge.xxx.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/knowledge.xxx.com/chain.pem
 
    <Directory />
        AllowOverride All
    </Directory>

    <Location />
        Require all denied
        # 社内
        Require ip xxx.xxx.xxx.xxx
    </Location>
</VirtualHost>

ポイントは、DirectoryでAllowOverride Allを許可することです
パーマリンク変更した時にhtaccessに書き込みがあるので、AllowOverride Allがないとパーマリンク変更後に記事の閲覧や投稿ができなくなります
また、DirectoryとLocationは設定が似ていますが、AllowOverride AllはDirectoryで指定しないと機能しないのも注意です(私はまんまとはまりました)

設定反映のため、サービスをリロードします

# systemctl reload httpd

WordPress設定

管理者設定とログイン

https://knowledge.xxx.comにアクセスします

データベース名、ユーザー名、パスワードを入力して進みます

麺女
麺女

こちら画面を撮り忘れてしまいました、すいません…

画面の各項目を設定します
「検索エンジンでの表示」については、検索エンジンにインデックスされたくないのでチェックを入れましょう

テーマインストール

「Cocoon」という無料テーマを使用します
このテーマは無料ですが多機能でかつ開発者によるマニュアルサイトもあるので使いやすいテーマです

インストールは下記手順を参照して実施します

Cocoonテーマをインストールする方法
WordPressにCocoon親テーマと子テーマをインストールして利用するおすすめのインストール方法です。

テーマのインストールに失敗する場合は、Cocoonの公式に記載ある通り、低サイズ版をダウンロードするとうまくいきます

パーマリンクの設定

パーマリンクはページのURLの設定です
後からURLを変更することは好ましくないので、先に変更しておきます

社内用のため、SEOを意識したパーマリンクにする必要もないので、好みで決めました
「カスタム」にして、カテゴリーとpostIDで設定するようにしました

プラグインのインストール

要件に「AチームとBチームのユーザーがおり、閲覧はどちらのチームの投稿でも見ることができるが、編集と公開は自分のチームの投稿のみ可能とする」とあります
この設定をするためには標準のWordPressのユーザー設定ではできないので、それを実現するためにプラグインをインストールします

必要なプラグインは、「User Role Editor」と「User Access Manager」の二つです

まず管理画面から「プラグイン」を開きます
その後、「プラグインを追加」をクリックします

プラグインの検索欄に「User Role Editor」と入力します
少し待つとフィルター結果が表示されるので、該当のプラグインを「今すぐインストール」をクリックしてインストールします

今度はプラグインの検索欄に「User Access Manager」と入力します
少し待つとフィルター結果が表示されるので、該当のプラグインを「今すぐインストール」をクリックしてインストールします

「インストール済みプラグイン」を開き、インストールしたプラグインをそれぞれ有効化します

権限グループの作成

グループを作成します
ここでいうグループは、要件の「チーム」に該当します

[ユーザー]-[UserRoleEditor]をクリックします

「権限グループを追加」をクリックします

今回はAチームというチームを作ることにします
権限グループと表示する権限グループは任意の値を設定するので下記のように設定しました
コピー元は、Aチームに所属するメンバーにどのような権限を与えたいかで決めます
記事の編集・公開をさせたいので、「編集者」を設定して、「権限グループを追加」をクリックします

同じ手順で、「編集者」をコピー元とした「Bチーム」も作成しておきます

「UAM」をクリックします

ユーザーグループ名、閲覧権限、権限グループとの関連付けを設定します
ユーザーグループ名は任意の値ですが、分かりやすいように先ほど作成したグループと合わせて「Aグループ」とします
閲覧権限は、「チーム外の人も閲覧できるかどうか」です
今回は全員閲覧できるようにしたいので、「すべてのユーザー」を設定します
権限グループとの関連付けは、先ほど「UserRoleEditor」で作成したグループに紐づけるので、「Aチーム」を選択します
以上を設定して、「新しいユーザーグループの追加」をクリックします

同様の手順で「Bチーム」も作成します

ユーザーの作成

Aチームに所属するAさん、Bチームに所属するBさん、両方に所属するCさんを作成します

[ユーザー]-[ユーザーを追加]をクリックします

ユーザー名、メール、パスワード、権限グループ、ユーザーグループを設定します
権限グループ、ユーザーグループはどちらもAチームを選択します
設定後、「ユーザーを追加」をクリックします

同様の手順で「B」ユーザーも作成します

Cユーザーの作成ですが、一部設定が変わる部分があります
権限グループの設定は一つのグループしか設定できないので、その下のその他の権限グループでグループを追加で設定する必要があります

また、ユーザーグループも二つのグループを設定する必要があります

カテゴリーとタグの作成

カテゴリーとタグを作ります
カテゴリーは大枠、タグは小項目のような用途で使います

まずカテゴリーを作成します
今回は、helpdesk、web、all、というカテゴリーを作り、
helpdesk←Aチームのみ投稿可能
web←Bチームのみ投稿可能
all←どちらも投稿可能

とします

[投稿]-[カテゴリー]を開きます

名前とスラッグに「helpdesk」と入力します
スラッグは、URLに使用する際の表示名です
ユーザーグループはAチームを設定します
設定後、「カテゴリーを追加」をクリックします

名前を日本語入力すると、スラッグも日本語で自動入力されます
日本語で設定するとURLへの文字列が長くなったり不具合が起きることがあります

パーマリンクは日本語だとダメなの?SEOへの影響と英語に直す設定方法を解説
パーマリンクとは何か まずは基本知識から確認していきます。全体像を正しく理解することで最適なパーマリンク設定が分かってきます。 「パーマリンク」とは、wordp ...

今回、パーマリンクにカテゴリー名を表示するようにカスタマイズしているので、名前に日本語を使用する場合、スラッグは手動で英語表記に変更しておいた方が良いでしょう

同様にwebカテゴリー、allカテゴリーも作成します
ユーザーグループはwebはBチーム、allはAとBチーム両方とします

次にタグを作成します
名前とスラッグに関してはカテゴリーと同じようなルールで入力します(今回はWindows11というタグを作りました)
ユーザーグループは、設定しないことに注意します
設定後に「タグを追加」をクリックします

カテゴリーで編集できる記事とできない記事をすでに分けているので、タグにも権限を付けてしまうと管理が煩雑化します

例えば、helpdeskのカテゴリーを付けている記事はBチームでは編集できないようになっていますが、ここでチームBに権限があるタグを記事に付けてしまうと、Bチームも記事を編集できるようになってしまいます

記事の作成

[投稿]-[投稿を追加]をクリックします

タイトルや本文を入力します
該当するカテゴリーを設定します
このカテゴリー設定が、記事を誰が投稿できるかどうかの権限設定になります
記事が完成したら「公開」をクリックして投稿します

記事を作成しているユーザーに権限がないカテゴリーについては、投稿画面に表示されないようになっています

WordPressレイアウト変更

現状だと社内ナレッジサイトとしてはまだ見づらいので、レイアウトを調整していきます

カテゴリー一覧をトップページに表示する

こちらの記事を参考にしました

【初心者向け/簡単】Cocoonのトップページにカテゴリー別記事を表示する2つの方法!
初心者にもわかりやすく解説!難しい専門用語もほとんどなし!図解多め!ブログのトップページを見やすくしたい!ブログのトップページをカテゴリ別に表示(カスタマイズ)したい!出来るだけ簡単に設定したい! という方に、その設定方法をわかりやすく解説...

[Cocoon設定]-[インデックス]を開き、フロントページタイプを「カテゴリーごと(2カラム)」に変更します
変更後、画面下部の「変更をまとめて保存」をクリックします

新着記事一覧をトップページから削除する

こちらの記事を参考にしました

【Cocoon】「新着記事」を非表示にするカスタマイズ(トップページ)
Cocoonでトップページをサイト型に変更すると、「新着記事」は必ず表示されます。「新着記事」を非表示したい場合はこの記事で紹介している非表示のCSSを追加(カスタマイズ)することで簡単に「新着記事」を非表示にすることができます。

[外観]-[カスタマイズ]を開きます

「追加CSS」をクリックします

表示された枠内に以下の内容を貼り付けます

/* 「新着記事」を非表示にするCSS */
div#list-wrap .list-new-entries {
  display: none;
}

「公開」をクリックします

サイドバーをカスタマイズする

今回は、画面をスクロールしてもそのままサイドバーが付いてくるサイドバースクロール追従を使って、検索・タグ一覧・カテゴリーの項目が表示されるようにカスタマイズします

[外観]-[ウィジェット]を開きます

サイドバースクロール追従に不要な項目があれば削除します
今回、検索とタグクラウドとカテゴリー表示のみにしたいと思っていますのでそれ以外は削除します(アーカイブや最近のコメントを消しました)

各項目の矢印をクリックすると詳細が開くので、その後「削除」をクリックします

もし上の項目のサイドバーに何か登録されている場合は、今回不要なので上記手順と同様に削除してください

スキンの変更

[Cocoon]-[スキン]を開きます
色々なスキンがありますので、気に入ったものを選択します
選択後、「変更をまとめて保存」をクリックします

コメント

タイトルとURLをコピーしました