Toshimichi Mimoto
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: WordPressのサブディレクトリ型の管理方法についてマルチサイトはナンチャッテしか管理したことがないので全く自信がありません。(スミマセン…)
以下の内容でwp-content/mu-plugins/my-browse-restriction.php
を作成してみるとどうでしょう?<?php add_action( 'template_redirect', 'my_browse_restriction' ); function my_browse_restriction() { global $blog_id; if ( $blog_id == 1 ) /** * 親サイトなら何もしない */ return; if ( ! is_super_admin() && ! is_user_logged_in() ) // if ( ! is_super_admin() && ! current_user_can_for_blog( $blog_id, 'read' ) ) /* 上が駄目だったら... */ /** * 特権管理者でなく、かつ表示中の子サイトにログインしていない場合は(サイトのメンバーでない場合は?)ログイン画面にリダイレクト */ auth_redirect(); }
未検証なのでバグを含んでいるかもしれません… 恐れ入りますが自己責任で検証下さい。
なお、ダミーのURLですが、
example.com
を使用したほうが良いと思います。(参考: ブログとか文章で例として使えるドメインとかIPアドレス)フォーラム: 使い方全般
返信が含まれるトピック: スマホで、トップページに設定したのと違うページが表示される拝見したところ WPtouch Mobile Plugin を使用されていると見受けられます。
管理画面(当方、WPtouch 3.8.2 で確認)で
- WPtouch
- コア設定
- ランディングページ WPtouch待ち受けページ:
を確認するとどうなっていますか?
「Default (same as desktop visitors)」が選択されていればデスクトップと同じトップページが表示されると思いますがいかがでしょうか。
フォーラム: 使い方全般
返信が含まれるトピック: カスタムフィールドの表示順を固定したいデフォルトのカスタムフィールドでは難しいと思います。
Advanced Custom Fields Plugin や、Custom Field Suite などのカスタムフィールドを拡張してくれるプラグインを使用すれば可能と思われますが、2.9で正常に動くかは微妙です。
(なお、Advanced Custom Fields Plugin の場合、Repeater Field という有料アドオンが必要と思われます。)なお、この問題に直面しているのは2.9というかなり古いバージョン上のことであるのは事実ですが、バージョンを新しくすることで簡単な解決法があるようでしたら、もちろんバージョンアップも検討します。
古いヴァージョンの使用を続けるのは何かとリスクが高いと思うので、当件の解決の可否にかかわらず、最新ヴァージョンの使用を強くおすすめします。
フォーラム: 使い方全般
返信が含まれるトピック: WordPressのサブディレクトリ型の管理方法についてフォーラム: 使い方全般
返信が含まれるトピック: jQuery Glide.jsが動作しない原因を教えてください<?php wp_deregister_script('jquery'); wp_enqueue_script('glide',get_bloginfo('template_url') . '/js/glide.min.js', array('jquery'), '1.0'); ?>
wp_enqueue_script
の第三引数に'jquery'
を含めているので、wp_deregister_script
で'jquery'
が登録されていない状態になると'glide'
も読み込まれない気がします。
'jquery'
を自前のものでwp_register_script
し直すか、またはhead
に記述したjQuery部分とwp_deregister_script
を消してください。そうすれば'glide'
の読み込み時に(後者であれば、WordPressにビルドインされた)jQueryが読み込まれます。
ちなみに上記コードはfunctions.php
に記述されていますか?これらの関数はwp_enqueue_scripts
というアクションフックにフックされている必要があります。add_action( 'wp_enqueue_scripts', 'my_glide_enqueue_script' ); function my_glide_enqueue_script() { wp_enqueue_script( /* 略 */ ); }
あと、
get_bloginfo('template_url')
では親テーマのディレクトリーを出力するのでは?
glide.min.js
を子テーマに格納している場合は、get_stylesheet_directory_uri()
が適当と思います。出力されたページのソースを見てみてください。思惑通りのコードが出力されているか否か確認できます。
またブラウザのデベロッパーズツールなどでjavascriptについてのエラーが発生していないか、というのも併せて確認いただいた方が良いと思います。
ご健闘を祈りますっフォーラム: 使い方全般
返信が含まれるトピック: jQuery Glide.jsが動作しない原因を教えてくださいスクリプトが実行されるときに対象となる要素、今回の場合は
slider
のクラスを付与させた要素が読み込み済みでないとスクリプトは正常に動きません。<script type="text/javascript"> jQuery('.slider').glide(); </script>
は、
head
内ではなく、</body>
の前に記述する必要があります。フォーラム: 使い方全般
返信が含まれるトピック: 会員制サイトでwp-login.phpの閲覧制限した時にログインできないすみません、Login Widget With Shortcode のコードをちら見してみたのですが、いまいち関連があるかわかりませんでした – -;
wp_redirect
とwp_safe_redirect
との挙動の違いが気になっていろいろ調べていたのですが、こちらも判然としません… (wp_redirect
からwp_safe_redirect
への修正が必要な例..)少なくとも私の提示したコードについては(いずれの関数にしても)直後に
exit;
が入っていませんでしたので修正させて下さいっadd_action( 'login_init', function() { wp_safe_redirect( home_url() ); // wp_redirect( home_url() ); でもOK? exit; } );
私もまだまだ勉強中です。
これからもよろしくお願いします。フォーラム: 使い方全般
返信が含まれるトピック: 会員制サイトでwp-login.phpの閲覧制限した時にログインできない解決したのであればよかったです。
これで行けました!wp-redirectで同じことを試したのですが、その時はpostが弾かれてダメだったのかもしれませんが、 wp_safe_redirectは大丈夫でした。初めて知った関数でした。
postが弾かれる、というのは
form
のaction
属性でwp-login.php
が指定されているので、フォームに入力された情報を送るときにリダイレクトされてしまいログインが出来ないのでは… というつもりでした。
wp_redirect
とwp_safe_redirect
で今回の件について挙動の差異が発生する原因はわからないので何か悶々とします ^^;Twenty Fifteen テーマの子テーマ使用で、子テーマの
functions.php
に下記コードを加えて検証してみました。add_action( 'login_init', function() { /** * $_POST の内容で条件分岐をしない * wp_redirect */ wp_redirect( home_url() ); } ); add_action( 'get_sidebar', function() { if ( ! is_user_logged_in() ) { // 以下、ご質問内容にあるコード ?> <form method="post" action="<?php echo wp_login_url() ?>?redirect_to=<?php echo esc_attr($_SERVER['REQUEST_URI']) ?>"> <label for="login_username">ユーザー名:</label> <input type="text" name="log" id="login_username" value="" /> <label for="login_password">パスワード:</label> <input type="password" name="pwd" id="login_password" value="" /> <input id="user_submit" type="submit" value="ログイン" /> </form> <?php } } );
上記でおそらく思惑通りの動きをしたんですよね…
どこか別のところに問題があったのかもしれませんね。フォーラム: 使い方全般
返信が含まれるトピック: 孫カテだけにチェックを入れていても、親カテゴリの情報を出したい検証していませんが、こちらだとどうでしょう。
<?php $cats = get_the_category(); $cat = $cats[0]; $cat_id = $cat->term_id; $cat_ids = get_ancestors( $cat_id, 'category' ); $top_cat_id = $cat_ids[count( $cat_ids ) - 1]; $top_cat = get_category( $top_cat_id ); echo $top_cat->name; ?>
フォーラム: 使い方全般
返信が含まれるトピック: SettingAPI利用でデータを配列で保存する方法はある?やっと検証しましたが問題はないようです。
ただし体裁はひどいものです。一応下記でそれなりにはなります。
function eg_setting_callback_function() { $vals = get_option( 'eg_setting_name', array() ); $checked = isset( $vals['cb'] ) && $vals['cb'] ? 'checked="checked"' : ''; $textVal = isset( $vals['text'] ) ? $vals['text'] : ''; echo '<input name="eg_setting_name[cb]" id="gv_thumbnails_insert_into_excerpt" type="checkbox" value="1" class="code" ' . $checked . ' /> Explanation text'; echo '</td></tr><tr><th>Text</th><td>'; // add echo '<input name="eg_setting_name[text]" id="gv_thumbnails_insert_into_something" type="text" value="' . esc_attr( $textVal ) . '" />'; }
…かなりブサイクなコードですが – -;
ちなみに、Settings APIでは
add_settings_section
とdo_settings_sections
はすっ飛ばしてpage直下にfieldを展開することもできます。
Codexのように既存のsectionに追加する場合は(多分)上記のような手法をとることになると思いますが、add_menu_page
やadd_submenu_page
(などそれに類する関数)から設定ページを構築する場合はそちらのほうが良いかもしれませんね。以上あしからず
フォーラム: 使い方全般
返信が含まれるトピック: WordPressの新着情報を違うサイトに出したいもしHTMLファイルの文字コードを変換できない事情がある場合は…
PHP: mb_convert_encoding – Manual
をご参照ください。フォーラム: 使い方全般
返信が含まれるトピック: SettingAPI利用でデータを配列で保存する方法はある?あっ、すみません。Code 間違えてますね。
function eg_setting_callback_function() { $vals = get_option( 'eg_setting_name', array() ); $checked = isset( $vals['cb'] ) && $vals['cb'] ? 'checked="checked"' : ''; // fix $textVal = isset( $vals['text'] ) ? $vals['text'] : ''; // fix echo '<input name="eg_setting_name[cb]" id="gv_thumbnails_insert_into_excerpt" type="checkbox" value="1" class="code" ' . $checked . ' /> Explanation text'; echo '<input name="eg_setting_name[text]" id="gv_thumbnails_insert_into_something" type="text" value="' . esc_attr( $textVal ) . '" />'; }
(コメント箇所以外もどさくさに紛れていくつか直してます ^_^;)
ちなみに
maybe_unserialize
、およびmaybe_serialize
は、この場合、それぞれget_option
、update_option
内で適用されているので考慮しなくても大丈夫だと思います。フォーラム: 使い方全般
返信が含まれるトピック: SettingAPI利用でデータを配列で保存する方法はある?add_settings_field
関数の第三引数でコールバック関数を登録したと思いますが、その中でpostを配列で送れるように記述していけば良いと思います。こちらでいうと
eg_setting_callback_function
関数を、function eg_setting_callback_function() { $vals = get_option( 'eg_setting_name' ); $checked = isset( $vals[checkbox] ) && $vals['checked'] ? ' checked' : ''; $textVal = isset( $vals[checkbox] ) ? $vals['checked'] : ''; echo '<input name="eg_setting_name[cb]" id="gv_thumbnails_insert_into_excerpt" type="checkbox" value="1" class="code" ' . $checked . ' /> Explanation text'; echo '<input name="eg_setting_name[text]" id="gv_thumbnails_insert_into_something" type="text" value="' . esc_attr( $textVal ) . '" />'; }
という感じに粛々とフォーム要素を記述していく感じですね。(未検証)
フォーラム: 使い方全般
返信が含まれるトピック: 会員制サイトでwp-login.phpの閲覧制限した時にログインできないhtaccessで制限するのではなく
login_init
アクションでなんとかしてみるのはどうでしょう。add_action( 'login_init', function() { wp_safe_redirect( home_url() ); } );
で試してみたらちゃんと弾いてくれました。
—
追記)
あ、この場合でもそのままだとformからのpostを弾いてしまいますよね。。でも、htaccessよりはいろいろ条件を分岐させて柔軟に対処できそうな気がします。
例えば、
add_action( 'login_init', function() { $log = filter_input( INPUT_POST, 'log' ); $pwd = filter_input( INPUT_POST, 'pwd' ); if ( ! $log || ! $pwd ) wp_safe_redirect( home_url() ); } );
というような感じですかね。
フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿の編集画面にカテゴリーが表示されないあと、slug名でたまに表示されない時があったので
わたくしは、基本的に「-」は入れないようにしています。
※関係ないかもしれないです。codexには、
$taxonomy
(文字列) (必須) タクソノミーの名前。英小文字とアンダースコアのみ、32文字以下(データベース構造による制限)。
初期値: なしとありますね。
-
を使いたい場合は、register_taxonomy
の引数に、'rewrite' => array( 'slug' => 'newss-cat' )
を追加して、タクソノミー名は別の文字列を使ってみるのはどうでしょう。