plum0710
フォーラムへの返信
-
フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になります>Daisuke Takahashi様
コードの改良、ありがとうございます。
ご協力いただき、本当に助かりました。>wpmubp
ありがとうございます。
参考にさせていただきます。こちらのフォーラムは解決とさせていただきます。
本当にありがとうございました。フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になります一応解決しました。
一時的な回避策かもしれませんが、コードを以下のように変更しました。
function synchro_roles_add ( $user_id ) { $role = get_user_meta( $user_id, 'wp_capabilities' ); $role = $role[0]; add_user_meta( $user_id, 'wp2_capabilities', $role ); } add_action( 'user_register', 'synchro_roles_add' ); function synchro_roles_update ( $user_id ) { $role = get_user_meta( $user_id, 'wp_capabilities' ); $role = $role[0]; update_user_meta( $user_id, 'wp2_capabilities', $role ); } add_action( 'profile_update', 'synchro_roles_update' );
アクションフックのinitとdie()を組み合わせてデバッグ作業できることを教示していただいたため、色々と試してみたら、どうもgetする際にもとの状態に戻らないということが判明しました。
これでいいのか分かりませんが、解決にご協力いただき、ありがとうございました。
フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になります作成ありがとうございます。
結果は以下のようになりました。
Static String bool(true) bool(true) array(1) { ["contributor"]=> bool(true) } array(1) { ["contributor"]=> bool(true) } Meta by current uid (Data) array(1) { [0]=> array(1) { ["administrator"]=> bool(true) } }
フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になります削除の件、かしこまりました。
ホスティングは、、、さくらサーバという回答で大丈夫でしょうか?
OSバージョンは「FreeBSD 9.1-RELEASE-p15 amd64」と記載してあります。
その他ソフトウェアのバージョンは以下の通りです。
Apache:2.2.25
MySQL:5.5
PHP:5.4.29フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になりますフォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になりますすみません追記です。
プラグインは現在すべて無効化しています。
p.s.
ツイッターを拝見しました。
ご協力、誠にありがとうございます。試験頑張ってください。フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になります回答ありがとうございます。
サーバはさくら、データベースは文字コード以外に変更はしていません。
(データベース文字コード:UTF-8)
テーマ:Twenty Fourteenまた設定に関してはwp-config.phpの
/** * ローカル言語 - このパッケージでは初期値として 'ja' (日本語 UTF-8) が設定されています。 * * WordPress のローカル言語を設定します。設定した言語に対応する MO ファイルが * wp-content/languages にインストールされている必要があります。例えば de.mo を * wp-content/languages にインストールし WPLANG を 'de' に設定することでドイツ語がサポートされます。 */ define ('WPLANG', 'ja');
の下に
define('CUSTOM_USER_TABLE', 'wp_users'); define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
を追加したことに加えて、function.phpに記載した作成した関数を作成したのみです。
また、いただいた回避策に関してですが、wp2_capabilitiesの中身が空白の状態になり、権限グループの共有はできませんでした。
フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になります回答ありがとうございます。
またCoreファイルの修正依頼ありがとうございます。function maybe_serialize( $data ) { if ( is_array( $data ) || is_object( $data ) ) return serialize( $data ); // Double serialization is required for backward compatibility. // See http://core.trac.wordpress.org/ticket/12930 if ( is_serialized( $data, false ) ) return serialize( $data ); return $data; }
add_user_meta関数の中で使用されているmaybe_serialize関数(上記)を見てみました。
Daisuke Takahashi様の提案に従い、unserializeをして配列に戻したとしても、1回目のif文で正常なシリアライズが施され、2回目のif文のis_serialized関数で「シリアライズされていない」という判断をされ、更にシリアライズが施されるため、手の打ちようがないということがよくわかりました。
解決策としては
・アップデートを待ってそれに合わせたプラグインを作成する
・手でCoreファイルを書き換える(こちらはあまりしたくないです)くらいでしょうかね。。。
フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になります回答ありがとうございます。
Daisuke Takahashi様の回答が「シリアライズ化されてDBに格納されていた文字列をPHPの配列に変換して$roleに格納するという操作をすればいいのではないか」という提案と解釈して返信しています。
get_user_meta関数が実行しているget_metadata関数を見てみると出力時にmaybe_unserialize関数を通しており、get_user_metaの時点でシリアライズ化は解除されているため、maybe_unserialize()でgetした結果のシリアライズを解除しても解決には至りませんでした。
フォーラム: マルチサイト
返信が含まれるトピック: 複数サイトでユーザーを共有する際に権限グループが「なし」になります回答ありがとうございます。
ご提案のフローを記述してみました。今のところ登録時のみのものです。AのDBのテーブルPrefixが「wp_」で、
BのDBのテーブルPrefixが「wp2_」としています。サイトAに以下の関数を作成しましたが、うまくいきません。
function synchro_roles ( $user_id ) { $role = get_user_meta( $user_id, 'wp_capabilities' ); add_user_meta( $user_id, 'wp2_capabilities', $role ); } add_action( 'user_register', 'synchro_roles' );
原因は以下のようにwpからwp2に値を移す際に余分なシリアライズが入ることです。
wp_capabilitiesのmeta_value → a:1:{s:11:”contributor”;b:1;}
wp2_capabilitiesのmeta_value → a:1:{i:0;a:1:{s:11:”contributor”;b:1;}}上記のことがわかっていながら対策が打てない状況です。
大変申し訳ないのですが、アドバイス・打開策をいただけないでしょうか?フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿でCustom Field TemplateのmultipleButtonが機能しません。。。申し訳ありません。自己解決しました。
supportsのeditorを抜くとmultipleButtonが機能しなくなるようです。
フォーラム: 使い方全般
返信が含まれるトピック: wp_list_pagesのdepthが効かなくなりました。。。ありがとうございます。上記コードで上手くいきました!
どうやらwp_list_pageのechoが良くなかったようです。本当にありがとうございます!
フォーラム: 使い方全般
返信が含まれるトピック: wp_list_pagesのdepthが効かなくなりました。。。>>nobitaさん
申し訳ありません。
問題のある部分を抜粋していたので書き忘れです。。。下記のようになっております!
function simple_sitemap(){ global $wpdb; $sitemap_ID = strval( get_page_by_path('sitemap') -> ID ); $request_ID = strval( get_page_by_path('request') -> ID ); $exclude_ID = $sitemap_ID.",".$request_ID; $args = array( 'depth' => 2, 'show_date' => '', 'date_format' => get_option('date_format'), 'exclude' => $exclude_ID, 'include' => NULL, 'child_of' => 0, 'title_li' => '', 'echo' => 1, 'authors' => NULL, 'sort_column' => 'menu_order, post_title', 'link_before' => NULL, 'link_after' => NULL, 'exclude_tree' => NULL ); echo '<div id="sitemap"><ul>'; wp_list_pages($args); echo '</ul>'; //カスタム投稿用 // スラッグからカスタム投稿名をを取得 $blog_title = get_post_type_object('blog') -> labels -> name; $result_title = get_post_type_object('result')-> labels -> name; $voice_title = get_post_type_object('voice') -> labels -> name; // スラッグからアーカイブ用のリンクを取得しつつaタグを作成 $blog_link = "<a href=".get_post_type_archive_link( 'blog' ).">".$blog_title."</a>"; $result_link = "<a href=".get_post_type_archive_link( 'result' ).">".$result_title."</a>"; $voice_link = "<a href=".get_post_type_archive_link( 'voice' ).">".$voice_title."</a>"; echo '<ul><li>'; echo $blog_link; echo '</li></ul>'; echo '<ul><li>'; echo $result_link; echo '</li></ul>'; echo '<ul><li>'; echo $voice_link; echo '</li></ul>'; //サイトマップ・お問い合わせ用(IDからリンクを取得・スラッグからページのタイトルを取得) // スラッグから固定ページ名を取得 $request_title = get_page_by_path('request') -> post_title; $sitemap_title = get_page_by_path('sitemap') -> post_title; // スラッグから取得したIDからリンクを取得しつつaタグを作成 $request_link = "<a href=".get_category_link( $request_ID ).">".$request_title."</a>"; $sitemap_link = "<a href=".get_category_link( $sitemap_ID ).">".$sitemap_title."</a>"; echo '<ul><li>'; echo $request_link; echo '</li></ul>'; echo '<ul><li>'; echo $sitemap_link; echo '</li></ul>'; echo '</div>'; } add_shortcode('sitemap', 'simple_sitemap');
汚くて申し訳ありませんが、よろしくお願いします。
フォーラム: 使い方全般
返信が含まれるトピック: wp_list_pagesのdepthが効かなくなりました。。。なるほど。大変失礼いたしました。。。
function simple_sitemap(){ global $wpdb; $sitemap_ID = strval( get_page_by_path('sitemap') -> ID ); $request_ID = strval( get_page_by_path('request') -> ID ); $exclude_ID = $sitemap_ID.",".$request_ID; $args = array( 'depth' => 2, 'show_date' => '', 'date_format' => get_option('date_format'), 'exclude' => $exclude_ID, 'include' => NULL, 'child_of' => 0, 'title_li' => '', 'echo' => 1, 'authors' => NULL, 'sort_column' => 'menu_order, post_title', 'link_before' => NULL, 'link_after' => NULL, 'exclude_tree' => NULL ); echo '<div id="sitemap"><ul>'; wp_list_pages($args); echo '</ul>'; add_shortcode('sitemap', 'simple_sitemap');
以上のようなコードを書いています。
よろしくお願いします!フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿でCustom Field TemplateのmultipleButtonが機能しません。。。