• お知恵を拝借したいのですが、、

    symfony + openpne で会員ログイン機能を連携させているサイトがあります。
    そこに WordPressのコンテンツを載せて、ログイン有・無で本文記事の開示範囲を制限させたいのです。
    本文は、moreタグを使って、抜粋と本文に分けようと思ってます。

    色々調べたところ、開示範囲の部分に、
    <?php if (!is_user_logged_in()) { auth_redirect(); } ?>
    を噛ませば一発なのは分かったんですが、なんせ WordPressで登録した会員ではないので、Cookieで制御するくらいしか思い浮かびません。

    何か良い案があればご教授頂けれたら、幸いです。
    一番手っ取り早い方法を取りたいですね。

    いちよう判断できる材料としては、OpnePNE側でも持っているcookie情報になります。

    //親symfony側とログイン情報を共有
    $member = $c_member_id ->OpnePNE会員ID
    $sid = session_id(); ->セッションID

    ※setcookie()で、cookieを保存しております。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • ログインの有無の判別をsymfony側で行って分岐し、その中でWPの関数で記事を表示することになると思います。
    WPで作成されていないページでWPの関数を使用するには、wp-load.phpを読み込みます。
     
    フォーラム » 使い方全般 » 自作トップページのindex.phpに新着5件表示

    WordPress のタグが使いたい場合は、wp-blog-header.php ではなく wp-load.php を Require するほうがより良いですね。

    この辺も参考にしてみてください。
    http://ja.forums.wordpress.org/topic/1918?replies=6

     

    WordPress のタグ等を使用したいだけであれば、wp-load.phpを require するだけで充分だからです。
    ソースを読んでもらえば分かるのですが、 wp-blog-header.php では wp-load.php を require した後、グローバル変数 $wp_query を作って wp-includes/template-loader.php を require しています。
    これらは、WordPress テーマのテンプレート上にデータを展開するために必要な処理です。

    wp-login.php など、テーマのテンプレート上にデータを展開する必要が無い処理では wp-load.php だけを require していますね。

     

    require_once('/[WPのルートディレクトリのパス]/wp-load.php');
    $my_posts = get_posts(); // WPの投稿を取得
    foreach($my_posts as $post) :
    	setup_postdata($post);
    	the_title(); // 投稿タイトル表示
    	if(~) : // symfony側でログイン有無の判別による分岐処理
    		/* ログイン済みの場合の処理 */
    		echo apply_filters('the_content', $post->post_content); // 本文すべて表示
    	else :
    		/* 未ログインの場合の処理 */
    		the_content(); // WPの個別投稿ページ以外では<!--more-->より前が表示されます。
    	endif;
    endforeach;
    wp_reset_postdata();

     
    テンプレートタグ – Codex 日本語版
    関数リファレンス – Codex 日本語版

    トピック投稿者 cyanpon0721

    (@cyanpon0721)

    早速のご返答有難うございました!

    上記の件に関しましては、既に OpnePNE側でcookieに保存させていたので、Wordpress側のfunction.phpに関数を作り、分岐させるところで呼び出そうと思ってます。

    ただ、今度はWordpressのテンプレート(sideber.php)から、symfonyのメソッド(会員ログインに関する部分)を呼び出すことになりかねない事態が出てきました。

    下記のURLを参考に環境を構築してみようと思うのですが、いかんせんsymfonyのバージョンが、1.1と限りなく古く、ちゃんと実装できるかどうかも不安です。
    http://www.exgear.jp/blog/2010/10/wordpress-with-symfony/

    過去にそういった実績のある方、いらっしゃいましたらご教授頂けましたら幸いです。

    モデレーター Seisuke Kuraishi

    (@tenpura)

    上記の件に関しましては、既に OpnePNE側でcookieに保存させていたので、Wordpress側のfunction.phpに関数を作り、分岐させるところで呼び出そうと思ってます。

    同様のケースでサイトを構築したことがありますが cookie が読めるのであればこれがもっとも無難な方法だと思います。

    WordPress側のfunction.phpに関数を作り

    アップグレードしにくくなるのでコアファイルは可能な限りいじらない方がよいでしょう。WordPress 全体で読み込ませたいなら /wp-content/mu-plugins の中に PHP ファイルを置いてそこに機能を追加していくとよいと思います。

    ただ、今度はWordpressのテンプレート(sideber.php)から、symfonyのメソッド(会員ログインに関する部分)を呼び出すことになりかねない事態が出てきました。

    会員のアバターやログイン情報でしょうか?内容によりますが単純なものであればセッション情報から引っ張るか symfony 側で API を作って間接的に利用するのがよいと思います。

    以下関連トピックにも参考になる情報がでているようです。
    会員制サイト構築について

3件の返信を表示中 - 1 - 3件目 (全3件中)

トピック「会員ログインの外部連携について」には新たに返信することはできません。