web-dev-qa-db-ja.com

テーブルwp_usermetaのフィールドwp_capabilitiesの意味は何ですか?

私はwordpressが初めてです、テーブルwp_usermetaに行があることに気付きました

meta_key                meta_value
wp_capabilities       a:1:{s:13:"administrator";b:1;}

まず、meta_value a:1:{s:13:"administrator";b:1;}の意味は何ですか?このフィールドの正確な説明はどこにありますか?あるいはroleuserCapabilitiesについてすべて知っておくべきこと、これらの情報はどこで入手できますか。

次に、コードでwordpress's APIを使って新しいロールを作成する方法を教えてください。

進んでくれてありがとう。

6
diligent

Wp_capabilitiesは値をserilized配列として保存します。phpまたはこの例では http://blog.tanist.co.uk/files/unserialize/ で試すことができます。

コード:

a:1:{s:13:"administrator";b:1;}

です:

Array
(
   [administrator] => 1
)

ユーザーが管理者であることを意味します。

関数 add_role を実行してデータベースに新しいロールを追加し、それを実行するのは once !だけにすることができます。

8

@ Krysiekの回答に加えて、ユーザーメタデータを含むメタテーブルに格納されているデータはシリアル化されていることが多いことを知っておく必要があります。データが実際に何を表しているのか知りたい場合は、PHP関数 unserialize を使用してその値を判断できます。例えば、値a:1:{s:13:"administrator";b:1;}をunserialize(そして var_dump - 結果を使用)して実行すると、次のようになります。

array(1) {
    ["administrator"]=>
    bool(true)
}

optionsテーブルとpost_metaテーブルにも同じ種類のエントリがあります。

ただし、これらのテーブルに直接書き込むことは避けてください。ユーザーに関するデータを保存してアクセスするためのWordPress機能があります。たとえば、ユーザーメタテーブルからデータを読み込むには get_user_meta を使用し、書き込むにはWordPress関数 update_user_meta を使用する必要があります。 post_metaおよびoptionsテーブルにも同様の機能があります。

4
cale_b

meta_valueは、メタフィールドの値を格納する列です。各meta_fieldはキーと値を含みます。

ロールと機能に関するこのコーデックスの記事はあなたに役立つはずだと思います: http://codex.wordpress.org/Roles_and_Capabilities

カスタムロールを追加するにはadd_role関数( http://codex.wordpress.org/Function_Reference/add_role )を使うべきです

そしてCodexからそれを使用する例:

$result = add_role('basic_contributor', 'Basic Contributor', array(
    'read' => true, // True allows that capability
    'edit_posts' => true,
    'delete_posts' => false, // Use false to explicitly deny
));
if (null !== $result) {
    echo 'Yay!  New role created!';
} else {
    echo 'Oh... the basic_contributor role already exists.';
}
1

テーブルwp_usermetaのキー "wp_capabilities"は、ユーザーの役割と$user->add_cap('my_capability');によってそのユーザーに追加された機能を識別する配列の直列化表現を識別します。ありがとう spaul

WordPressチームは、 "機能"が実際には特定の役割を担うユーザーのためにまとめられたものであることに気づく前に、フィールド[prefix] _capabilitiesに名前を付けました。キーの値を[prefix] _capabilitiesから[prefix] _rolesに変更すると、WordPress自体の巨大なリファクタリングが必要になるだけでなく、非常に多くのサードパーティ製プラグインが混乱することになります。

このため、wp_capabilitiesのusermetaキーはユーザーロールを保持しており、古い名前を使用することを想定しているソフトウェアがそれほど多くない場合は、wp_rolesという名前になります。

この事実は新しいWordPressの愛好家にとって非常に役に立つので、WordPressの役割(または機能)について何か言うことがある人は誰でも、ユーザーの役割がusermetaテーブルの下にシリアル化されている配列にリストされているという事実について前倒しでお勧め[prefix] _capabilitiesキー.

1
Dave Scotese

wp_usermetaテーブルでは、新しいユーザーを作成している間にユーザーに関する追加情報を保存するか、既存のユーザーのプロファイルを更新することができます。

wp_usermetaテーブルには列名meta_keyがあります。ここで値を保存することができます。このフィールドを通じて、そのフィールドの値をgetまたはupdateにすることができます。

ロールは、Webサイト内でそのようなアクセス権しか持たないというユーザーに与えられたアクセスポリシーのようなものです。ロールを追加、削除することができます。

機能は、機能の追加や役割の制限に似ています。例えば、2つの役割 'gold-role'、 'platinum-role'があります。私たちは、彼が投稿を追加することはできますが投稿を公開することはできませんが、彼が投稿を公開することができる機能を追加することができる「プラチナロール」に制限することができます。ロールに関連する機能を追加または削除することもできます。投稿のメタボックスに制限を追加することもできます。

詳細については、 役割と機能 を参照してください。

ロールを追加し、その機能を wordpress API で設定できます。あるいは、プラグインを使用してこれを実行できます。私の意見では Advanced Access Manager はロールと機能を処理するための最良のプラグインです。

0
ksr89