• 解決済 efu22

    (@efu22)


    既存サイトの example.com/wp/ にインストールし、オリジナルテーマ作成中です。
    example.com/member/ 以下を要ログインの会員サイトとするため、下記のように親子階層で投稿カテゴリを作成しました。
    (事情で、WPの会員サイト構築用プラグインは使っていません)

    親カテゴリ member
     └ 子カテゴリ member-info
       (実際には複数の子カテゴリあり)

    これで example.com/member/ 以下をログイン制限すれば、example.com/member/member-info/ などが会員専用ページにできると考えたのですが、、
    example.com/member-info/ のように親カテゴリ抜きのURL(TOP階層)でもアクセスができてしまいます。
    (オリジナルテーマ以外でも同様なので、これはWPの仕様ですよね?)

    example.com/member-info/ に出力させない or アクセスさせない設定は可能でしょうか?

    通常なら特に気にしませんが、会員向けコンテンツがログイン無しに見れる状態にするわけにはいかないので、
    スマートな方法が無ければどんな方法でも構いません。

    お分かりの方、何卒ご教示よろしくお願いいたします。

    ※追記: 関係あるか分かりませんが…
    パーマリンク設定はカスタム構造で下記のようにしており(カテゴリーベースは「.」)、「category」というディレクトリ名はURLに出ないようにしています。
    /%category%/%year%/%monthnum%/%postname%/

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック投稿者 efu22

    (@efu22)

    すみません、おそらくキャッシュ等で設定が正しく反映されていなかったかもしれないので、あらためて確認中です。

    一旦取り下げたいと思いましたが削除できないようなので…

    トピック投稿者 efu22

    (@efu22)

    表題の件、引き続きよろしくお願いいたします。

    ※先ほどうっかり「パーマリンクを保存」を押してしまった際に、TOP階層の.htaccess が書き換わってリンクがおかしくなり、混乱しておりました。(この問題もよく分からないので調べてみます。別トピックとしてご相談するかもしれません…)

    mokkosan

    (@mokkosan)

    直接の回答でなくてそもそも論で申し訳ないのですが、ログインしないとみられないコンテンツを作りたいということですよね。

    会員制サイトなどで会員限定で記事を読んでもらう場合なら単純に、WordPressの標準機能でログインした人しか読めない購読者限定記事を作ったらいいんではないかと思うのですが、それでは都合が悪いのですか?

    非公開記事は通常、編集者以上の権限がないと読めませんが、購読者に閲覧権限を与えてやれば、OKです。

    たとえば、functions.phpに

    $subscriber = get_role( 'subscriber' );
    $subscriber->add_cap( 'read_private_posts' );

    と書いて一度読み込んであげると、データベースに購読者の非公開記事閲覧権限が書き込まれます。

    • この返信は5ヶ月前にmokkosanが編集しました。
    トピック投稿者 efu22

    (@efu22)

    コメントありがとうございます。

    はい、いろいろ事情があっての判断です。既存の会員サイトが独自のシステムで運営されていてログインと会員情報はそちらで管理されており、記事系はCMSが入っていて、このCMS部分だけをWPに乗せ換え中です。

    本来すべてシステム含めサイト丸ごとリニューアルできれば理想的ですが、それは難しいという経緯なのです。

    ※追記:なので静的サイトに、必要な部分だけWPを組み込むイメージです。

    • この返信は5ヶ月前にefu22が編集しました。
    ishitaka

    (@ishitaka)

    こんにちは

    カテゴリーアーカイブページの曖昧 URL を無効(404)にするだけなら、こちらの方法でできると思います。

    トピック投稿者 efu22

    (@efu22)

    ご回答と参照記事、ありがとうございます!
    自動補完の仕様について、おかげさまで状況がよくわかりました。仰るとおり、曖昧URLはすべて無効にできればOKです。

    過去にご回答されていた下記トピックも拝見しました。
    「カテゴリーアーカイブのリンク」
    https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%82%a2%e3%83%bc%e3%82%ab%e3%82%a4%e3%83%96%e3%81%ae%e3%83%aa%e3%83%b3%e3%82%af/

    早速、記事と上記トピックを参照しながら試してみましたが、カテゴリーの親子階層の維持だけが効きません。
    (/member/member-info/ が /member-info/ でも見れてしまう)
    記事ページやその他の補完停止はうまくいっています。

    参考ソースと私の設定が合っていない部分があるのかどうか、知識不足でよくわからず申し訳ありません。

    引き続きアドバイスいただけたら幸いです。
    よろしくお願いいたします。

    ishitaka

    (@ishitaka)

    早速、記事と上記トピックを参照しながら試してみましたが、カテゴリーの親子階層の維持だけが効きません。

    子カテゴリー(/member-info/)なら、親カテゴリー(/member/)または親カテゴリー/子カテゴリー(/member/member-info/)にリダイレクトされませんか?

    トピック投稿者 efu22

    (@efu22)

    ありがとうございます。

    アーカイブページ(カテゴリー一覧)はリダイレクトされない状態です。記事ページはそのようにリダイレクトできています。

    参考ソースでうまくいく筈なら、何か別の設定が邪魔している可能性もあるでしょうか…??

    ishitaka

    (@ishitaka)

    カテゴリーアーカイブの階層を維持するということですね。読解力が不足してて申し訳ありません (^^;

    こんな感じではどうでしょうか?

    add_action( 'template_redirect', function() {
    	global $wp_rewrite, $wp_query;
    
    	if ( is_category() && $wp_rewrite->permalink_structure ) {
    		$category = get_category_by_path( $wp_query->query['category_name'] );
    		if ( ! $category || is_wp_error( $category ) ) {
    			$wp_query->set_404();
    			status_header( 404 );
    			nocache_headers();
    		}
    	}
    } );
    
    トピック投稿者 efu22

    (@efu22)

    根気よくご回答いただき、ありがとうございます!
    おかげさまで狙い通りにできました。
    (探しても全然情報が見つけられず、よほどニーズがないのか、不可能なのか? と思ったりしていました…)
    大変助かりました。本当に感謝いたします!!

    トピック投稿者 efu22

    (@efu22)

    では解決済みとさせていただきます。

    mokkosan もありがとうございました。WPで会員サイト構築する機会あれば参考にしてみます!

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • このトピックに返信するにはログインが必要です。