ログイン直後に表示されるページの変更

2010 年 12 月 2 日

ホーム フォーラム 使い方全般 ログイン直後に表示されるページの変更

このトピックには12件の返信が含まれ、2人の参加者がいます。6 年、 8 ヶ月前 nanbu さんが最後の更新を行いました。

13件の投稿を表示中 - 1 - 13件目 (全13件中)
  • 投稿者
    投稿
  • #50109

    jinbei
    参加者

    はじめまして、お世話になります。

    welcartにてサイト構築中なのですが、教えていただきたいことがあります。

    ログイン直後に表示されるページは会員情報ページになっていますが、他の固定ページを指定するにはどうしたらいいのでしょうか?

    固定ページ内にwelcartログインフォームを表示させ、ログインした場合にだけ表示されるブロックがあるページを用意してあるのですが、そのページでログインしても、いったん会員情報ページに移るため、再度その固定ページに移動し直す必要があります。その手間を省きたいと思っています。

    nanbu様、よろしくお願い致します。

    #60935

    nanbu
    参加者

    こんにちは。

    ページの遷移変更は可能です。

    テーマのfunctions.php に次のようにコードを設置します。

    まず、ログインフォームの中に任意のフィールドを設置するコードです。

    add_filter('usces_filter_login_inform', 'my_login_inform');
    function my_login_inform($form){
    return $form . '<input type="hidden" name="mypage_transition" />';
    }

    次に、Welcart の遷移を横取りしてリダイレクトさせるコードです。

    add_action('usces_main', 'mypage_transition', 10);
    function mypage_transition(){
    global $usces;
    if( isset($_REQUEST['mypage_transition']) ){
    $res = $usces->member_login();
    if( 'member' == $res ){
    header('location: ' . get_permalink(遷移させたいページID));
    exit;
    }elseif( 'login' == $res ){
    $usces->page = 'login';
    add_action('the_post', array($usces, 'action_memberFilter'));
    }
    }
    }

    location でリダイレクトさせていますが、wp_redirect() を使用する方が良いかもしれません。

    #60936

    jinbei
    参加者

    こんにちわ。

    functions.phpに教えていただいたコードを追加した(ど素人なもので、記述の仕方全く自信ないです(汗))のですが、うまくいきません。ログインしても会員情報ページに遷移してしまいます。

    固定ページに入り直すとページ内のコンテンツが表示されなくなりました。さらに、サイトのレイアウトも崩れてしまいました。

    もしよろしければ、メール(アドレスご指示くださいませ)にてサイトのURLをお知らせしますので、サイトを見ていただけないでしょうか?

    nanbu様、よろしくお願い致します。

    #60937

    nanbu
    参加者

    実際にサイトを見てもどこが悪いかを判断することはできません。

    記述したコードをこちらにそのまま貼り付けて見せてください。

    #60938

    jinbei
    参加者

    すみません、ダッシュボードを見ていただければと思った次第であります。

    functions.phpは以下のようになっています。

    <?php
    add_filter('usces_filter_login_inform', 'my_login_inform');
    function my_login_inform($form){
    return $form . '<input type="hidden" name="mypage_transition" />';
    }
    add_action('usces_main', 'mypage_transition', 10);
    function mypage_transition(){
    global $usces;
    if( isset($_REQUEST['mypage_transition']) ){
    $res = $usces->member_login();
    if( 'member' == $res ){
    header('location: ' . get_permalink(382));
    exit;
    }elseif( 'login' == $res ){
    $usces->page = 'login';
    add_action('the_post', array($usces, 'action_memberFilter'));
    }
    }
    }
    ?>

    <?php

    if ( function_exists('register_sidebar') ) {
    register_sidebars(2);
    }

    /*
    * return content which is arranged top thumbnail link to img tag.
    */
    function adjust_single_image($content) {
    $matches1 = $matches2 = $matches3 = array();

    // search *first* img/object tag
    preg_match('/<(img|object)(?:[^>]+?)>/', $content, $matches1);

    if ($matches1[1] != 'img') {
    return $content; // do nothing.
    }

    // retrieve first img tag
    preg_match('/<img(?:[^>]+?)>/', $content, $matches2);
    $target = $matches2[0];

    // check image link and arrange it.
    $chk_imglink = '/<a(?:.+?)href="(.+?.(?:jpe?g|png|gif))"(?:[^>]*?)>'. preg_quote($target, '/') .'</a>/';
    $content = preg_replace($chk_imglink, '<img src="$1" />', $content);

    return $content;
    }

    /*
    * return class name and image tag (resized w/h attributes) to fit a grid.
    */
    function adjust_grid_image($content, $col_w, $gap_w, $max_col, $flg_img_forcelink, $flg_obj_fit) {
    global $post;

    $col_class_base = 'x';
    $col_class = $col_class_base . '1'; // default column-width class
    $arr_w = array();
    for ($i=0; $i<$max_col; $i++) {
    $arr_w[] = ($col_w * ($i+1)) + ($gap_w * $i);
    }

    $grid_img = '';
    $w = $h = 0;
    $matches1 = $matches2 = $matches3 = array();

    // search *first* img/object tag
    preg_match('/<(img|object)(?:[^>]+?)>/', $content, $matches1);

    if ($matches1[1] == 'img') {
    preg_match('/<img(?:.+?)src="(.+?)"(?:[^>]+?)>/', $content, $matches2);
    $img_url = ($matches2[1]) ? $matches2[1] : '';
    if ($img_url) {
    // first, try to get attributes
    $matches_w = $matches_h = array();
    preg_match('/width="([0-9]+)"/', $matches2[0], $matches_w);
    preg_match('/height="([0-9]+)"/', $matches2[0], $matches_h);
    if ($matches_w[1] and $matches_h[1]) {
    $w = $matches_w[1];
    $h = $matches_h[1];
    }
    else {
    // ... or get original size info.
    $upload_path = trim( get_option('upload_path') );
    $mark = substr(strrchr($upload_path, "/"), 1); // default mark is 'uploads'
    $split_url = split($mark, $img_url);
    if ($split_url[1] != null) {
    $img_path = $upload_path . $split_url[1];
    list($w, $h) = @getimagesize($img_path);
    }
    }
    }

    for ($i=0; $i<$max_col; $i++) { // set new width and col_class
    if ( ($i >= $max_col - 1) or ($w < $arr_w[$i+1]) ) {
    $nw = $arr_w[$i];
    $col_class = $col_class_base . ($i+1);
    break;
    }
    }
    $nh = (!$w or !$h) ? $nw : intval( ($h * $nw) / $w ); // set new height

    $grid_img = $matches2[0];
    // add width/height properties if nothing
    $flg_no_w = (strpos($grid_img_edit, 'width=') === false);
    $flg_no_h = (strpos($grid_img_edit, 'height=') === false);
    if ($flg_no_w or $flg_no_h) {
    $grid_img_close = (substr($grid_img, -2) == '/>') ? '/>' : '>';
    $grid_img_edit = substr( $grid_img, 0, -(strlen($grid_img_close)) );
    $grid_img_edit .= ($flg_no_w) ? ' width="0"' : '';
    $grid_img_edit .= ($flg_no_h) ? ' height="0"' : '';
    $grid_img = $grid_img_edit . $grid_img_close;
    }
    // replace new width/height properties
    $grid_img = preg_replace('/width="(d+)"/', 'width="'. $nw .'"', $grid_img);
    $grid_img = preg_replace('/height="(d+)"/', 'height="'. $nh .'"', $grid_img);

    // check image link
    //$chk_imglink = '/(<a(?:.+?)rel="(?:lightbox[^"]*?)"(?:[^>]*?)>)'. preg_quote($matches2[0], '/') .'/';
    $chk_imglink = '/(<a(?:.+?)href="(?:.+?.(?:jpe?g|png|gif))"(?:[^>]*?)>)'. preg_quote($matches2[0], '/') .'/';
    if ($flg_img_forcelink) {
    $grid_img = '<a href="'. get_permalink() .'" title="' . esc_attr($post->post_title) . '">' . $grid_img . '</a>';
    }
    else if ( preg_match($chk_imglink, $content, $matches3) ) {
    $grid_img = $matches3[1] . $grid_img . '</a>';
    }
    }
    else if ($matches1[1] == 'object') {
    preg_match('/<object(.+?)</object>/', $content, $matches2);

    $matches_w = $matches_h = array();
    preg_match('/width="([0-9]+)"/', $matches2[0], $matches_w);
    preg_match('/height="([0-9]+)"/', $matches2[0], $matches_h);
    if ($matches_w[1] and $matches_h[1]) {
    $w = $matches_w[1];
    $h = $matches_h[1];
    }
    else {
    $flg_obj_fit = 'none';
    }

    //set col_class (and new width if in '*-fit' condition)
    if ($flg_obj_fit == 'small-fit') {
    for ($i=0; $i<$max_col; $i++) {
    if ($i >= $max_col -1) {
    $nw = $arr_w[$i];
    $col_class = $col_class_base . ($i+1);
    break;
    }
    else if ( $w < $arr_w[$i+1] ) {
    $nw = $arr_w[$i];
    $col_class = $col_class_base . ($i+1);
    break;
    }
    }
    }
    else if ($flg_obj_fit == 'large-fit') {
    for ($i=$max_col -1; $i>=0; $i--) {
    if ( $w > $arr_w[$i] ) {
    if ($i >= $max_col -1) {
    $nw = $arr_w[$i];
    $col_class = $col_class_base . ($i+1);
    }
    else {
    $nw = $arr_w[$i+1];
    $col_class = $col_class_base . ($i+2);
    }
    break;
    }
    if ($i == 0) {
    $nw = $arr_w[$i];
    $col_class = $col_class_base . ($i+1);
    }
    }
    }
    else {
    for ($i=0; $i<$max_col; $i++) {
    if ($i >= $max_col -1) {
    $col_class = $col_class_base . ($i+1);
    break;
    }
    else if ( $w < $arr_w[$i] ) {
    $col_class = $col_class_base . ($i+1);
    break;
    }
    }
    }
    $nh = (!$w or !$h) ? $nw : intval( ($h * $nw) / $w ); // set new height

    $grid_img = $matches2[0];
    if ($flg_obj_fit == 'small-fit' or $flg_obj_fit == 'large-fit') {
    // replace new width/height properties
    $grid_img = preg_replace('/width="(d+)"/', 'width="'. $nw .'"', $grid_img);
    $grid_img = preg_replace('/height="(d+)"/', 'height="'. $nh .'"', $grid_img);
    }
    }

    return array($col_class, $grid_img);
    }

    /*
    * echo paginate links using internal function "paginate_links()".
    *
    * see: <code>http://www.yuriko.net/arc/2008/07/26/navigation/</code>
    */
    function paginate_links2($is_top_single=false) {
    global $wp_rewrite;
    global $wp_query;
    global $paged;
    $paginate_base = ($is_top_single) ? trailingslashit( get_option('siteurl') ) : get_pagenum_link(1); /* mod */
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
    $paginate_format = '';
    $paginate_base = add_query_arg('paged', '%#%', $paginate_base); /* mod */
    } else {
    $paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
    user_trailingslashit('page/%#%/', 'paged');
    $paginate_base .= '%_%';
    }
    echo paginate_links( array(
    'base' => $paginate_base,
    'format' => $paginate_format,
    'total' => $wp_query->max_num_pages,
    'mid_size' => 5,
    'current' => ($paged ? $paged : 1),
    'prev_text' => '&laquo;',
    'next_text' => '&raquo;',
    ));
    }

    ?>

    #60939

    nanbu
    参加者

    ありがとうございます。

    php の開始・終了タグ(<?php ?>)を分けて記述しないで、今まで有ったコードの最後、終了タグのすぐ上にコードを追加するようにしてみてください。そして終了タグ(?>)の後には不要な改行が入らないようにしてください。

    サンプルのコードはこちらで動作を確認しています。

    もしこれでダメだった場合は下記宛にアドレス等をお送りください。

    nanbuアットusconsort.com(アットは@)

    #60940

    nanbu
    参加者

    サイト拝見しました。

    ウィジェットからのログインですね。すみません見逃していました。

    現在ログイン・ウィジェットにはフックを置いていないため動作しません。ウィジェットにもフックを置くよう修正したいと思います。しばらくお待ち下さい。対応状況で修正完了が確認できますので、完了しましたらDevelopment Version にアップグレードしてください。functions.php のコードはそのままで結構です。

    とりあえず動作の確認はできます。

    「パスワードをお忘れですか?」をクリックし、次のページにある「ログイン」をクリックしますとログインページが現れます。そこからログインしてみてください。

    #60941

    jinbei
    参加者

    こんにちわ。

    Development Versionにアップグレードしたのですが、状況は変わりませんでした。管理画面のプラグイン編集ページを見ると、usc-e-shop/usc-e-shop.phpというファイルだけが使用中となっており、ほかのファイルは停止中と表示されています。

    アップグレードの仕方がおかしいのでしょうか?

    FFFTPでusc-e-shopというフォルダをアップロードして上書きしました。

    #60942

    nanbu
    参加者

    こちらの動作確認はしていただけましたでしょうか。

    「パスワードをお忘れですか?」をクリックし、次のページにある「ログイン」をクリックしますとログインページが現れます。そこからログインしてみてください。

    この方法で遷移がうまく行っていましたら、残るはアップグレードだけの問題となります。

    Development Version へのアップグレードは、特別な事情が無い限りFTPによるアップはしないで、管理画面よりプラグインの削除と新規追加で行なってください。

    https://www.welcart.com/documents/install/installp

    #60943

    jinbei
    参加者

    動作確認できました。指示していただいた方法ですと、遷移がうまくいっています。

    アップグレードは、プラグインを削除して新規追加しましたが、やはりusc-e-shop/usc-e-shop.php以外のファイルは停止中と表示されてしまいます。

    #60944

    nanbu
    参加者

    プラグイン編集ページ は動作には全く関係が有りませんの無視していただいて結構です。むしろ誤って更新してしまうと危険ですのでそこは開かない方が無難です。

    一つ確認したいのですが、現在サイドバーにあるログインウィジェットは管理パネルからウィジェットを利用していますか?それともDefaut テーマのサイドバーからコピーして利用していますかどちらでしょうか。

    もし後者ですとフックが存在しない可能性が有ります。改めて最新版のWelcart Default テーマのサイドバーを確認して修正してください。

    #60945

    jinbei
    参加者

    プラグイン編集ページについては安心しました。

    サイドバーのログインウィジェットは管理パネルからウィジェットを利用しています。

    うまくいかない原因に関係しているかもしれないので報告しておきます。

    テーマのfunctions.phpにご指示通りに記述を挿入しますと、ページ遷移の動作確認はできましたがレイアウトは崩れ、ページ本文が表示されません。それから、挿入した記述を削除して元通りにしてファイルを更新しても、レイアウトが崩れたままで本分が表示されないままになります。(ファイルの編集は管理画面で行っています。)しかし、バックアップを取っておいたfunctions.phpをFTPでアップし上書きすると元通りになります。

    #60946

    nanbu
    参加者

    jinbei さん、申し訳ないのですが、この件に関してどうしてもうまく行かない場合は、「Welcart レスキュー」にて有償で原因追求をご依頼されるか、有償サポートをご購入いただく事になります。何卒ご了承ください。

13件の投稿を表示中 - 1 - 13件目 (全13件中)

このトピックに返信するにはログインが必要です。