フォーラムへの返信

15件の返信を表示中 - 166 - 180件目 (全193件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: WordPressのサブディレクトリ型の管理方法について
    トピック投稿者 Toshimichi Mimoto

    (@mimosafa)

    マルチサイトはナンチャッテしか管理したことがないので全く自信がありません。(スミマセン…)
    以下の内容で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 で確認)で

    1. WPtouch
    2. コア設定
    3. ランディングページ WPtouch待ち受けページ:

    を確認するとどうなっていますか?

    「Default (same as desktop visitors)」が選択されていればデスクトップと同じトップページが表示されると思いますがいかがでしょうか。

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタムフィールドの表示順を固定したい

    デフォルトのカスタムフィールドでは難しいと思います。
    Advanced Custom Fields Plugin や、Custom Field Suite などのカスタムフィールドを拡張してくれるプラグインを使用すれば可能と思われますが、2.9で正常に動くかは微妙です。
    (なお、Advanced Custom Fields Plugin の場合、Repeater Field という有料アドオンが必要と思われます。)

    なお、この問題に直面しているのは2.9というかなり古いバージョン上のことであるのは事実ですが、バージョンを新しくすることで簡単な解決法があるようでしたら、もちろんバージョンアップも検討します。

    古いヴァージョンの使用を続けるのは何かとリスクが高いと思うので、当件の解決の可否にかかわらず、最新ヴァージョンの使用を強くおすすめします。

    フォーラム: 使い方全般
    返信が含まれるトピック: WordPressのサブディレクトリ型の管理方法について
    トピック投稿者 Toshimichi Mimoto

    (@mimosafa)

    質問ですが、

    サブディレクトリ型の管理をしています。

    というのはマルチサイト化した状態のことを指しますか。
    それとも単純にurlの構造がそうなっているだけなのでしょうか。

    フォーラム: 使い方全般
    返信が含まれるトピック: 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>の前に記述する必要があります。

    すみません、Login Widget With Shortcode のコードをちら見してみたのですが、いまいち関連があるかわかりませんでした – -;

    wp_redirectwp_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-redirectで同じことを試したのですが、その時はpostが弾かれてダメだったのかもしれませんが、 wp_safe_redirectは大丈夫でした。初めて知った関数でした。

    postが弾かれる、というのは formaction属性でwp-login.phpが指定されているので、フォームに入力された情報を送るときにリダイレクトされてしまいログインが出来ないのでは… というつもりでした。
    wp_redirectwp_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;
    ?>

    やっと検証しましたが問題はないようです。
    ただし体裁はひどいものです。

    一応下記でそれなりにはなります。

    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_sectiondo_settings_sectionsはすっ飛ばしてpage直下にfieldを展開することもできます。
    Codexのように既存のsectionに追加する場合は(多分)上記のような手法をとることになると思いますが、add_menu_pageadd_submenu_page(などそれに類する関数)から設定ページを構築する場合はそちらのほうが良いかもしれませんね。

    以上あしからず

    フォーラム: 使い方全般
    返信が含まれるトピック: WordPressの新着情報を違うサイトに出したい

    もしHTMLファイルの文字コードを変換できない事情がある場合は…
    PHP: mb_convert_encoding – Manual
    をご参照ください。

    あっ、すみません。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_optionupdate_option内で適用されているので考慮しなくても大丈夫だと思います。

    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 ) . '" />';
     }

    という感じに粛々とフォーム要素を記述していく感じですね。(未検証)

    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' ) を追加して、タクソノミー名は別の文字列を使ってみるのはどうでしょう。

15件の返信を表示中 - 166 - 180件目 (全193件中)