ログイン直後に表示されるページの変更
-
投稿者投稿
-
2010年12月2日 9:47 AM #50109jinbei参加者
はじめまして、お世話になります。
welcartにてサイト構築中なのですが、教えていただきたいことがあります。
ログイン直後に表示されるページは会員情報ページになっていますが、他の固定ページを指定するにはどうしたらいいのでしょうか?
固定ページ内にwelcartログインフォームを表示させ、ログインした場合にだけ表示されるブロックがあるページを用意してあるのですが、そのページでログインしても、いったん会員情報ページに移るため、再度その固定ページに移動し直す必要があります。その手間を省きたいと思っています。
nanbu様、よろしくお願い致します。
2010年12月3日 2:05 AM #60935nanbuキーマスターこんにちは。
ページの遷移変更は可能です。
テーマの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() を使用する方が良いかもしれません。
2010年12月3日 5:32 AM #60936jinbei参加者こんにちわ。
functions.phpに教えていただいたコードを追加した(ど素人なもので、記述の仕方全く自信ないです(汗))のですが、うまくいきません。ログインしても会員情報ページに遷移してしまいます。
固定ページに入り直すとページ内のコンテンツが表示されなくなりました。さらに、サイトのレイアウトも崩れてしまいました。
もしよろしければ、メール(アドレスご指示くださいませ)にてサイトのURLをお知らせしますので、サイトを見ていただけないでしょうか?
nanbu様、よろしくお願い致します。
2010年12月3日 7:17 AM #60937nanbuキーマスター実際にサイトを見てもどこが悪いかを判断することはできません。
記述したコードをこちらにそのまま貼り付けて見せてください。
2010年12月3日 7:32 AM #60938jinbei参加者すみません、ダッシュボードを見ていただければと思った次第であります。
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' => '«',
'next_text' => '»',
));
}
?>2010年12月3日 9:06 AM #60939nanbuキーマスターありがとうございます。
php の開始・終了タグ(
<?php ?>
)を分けて記述しないで、今まで有ったコードの最後、終了タグのすぐ上にコードを追加するようにしてみてください。そして終了タグ(?>
)の後には不要な改行が入らないようにしてください。サンプルのコードはこちらで動作を確認しています。
もしこれでダメだった場合は下記宛にアドレス等をお送りください。
nanbuアットusconsort.com(アットは@)
2010年12月3日 5:04 PM #60940nanbuキーマスターサイト拝見しました。
ウィジェットからのログインですね。すみません見逃していました。
現在ログイン・ウィジェットにはフックを置いていないため動作しません。ウィジェットにもフックを置くよう修正したいと思います。しばらくお待ち下さい。対応状況で修正完了が確認できますので、完了しましたらDevelopment Version にアップグレードしてください。functions.php のコードはそのままで結構です。
とりあえず動作の確認はできます。
「パスワードをお忘れですか?」をクリックし、次のページにある「ログイン」をクリックしますとログインページが現れます。そこからログインしてみてください。
2010年12月8日 3:56 AM #60941jinbei参加者こんにちわ。
Development Versionにアップグレードしたのですが、状況は変わりませんでした。管理画面のプラグイン編集ページを見ると、usc-e-shop/usc-e-shop.phpというファイルだけが使用中となっており、ほかのファイルは停止中と表示されています。
アップグレードの仕方がおかしいのでしょうか?
FFFTPでusc-e-shopというフォルダをアップロードして上書きしました。
2010年12月8日 6:01 AM #60942nanbuキーマスターこちらの動作確認はしていただけましたでしょうか。
「パスワードをお忘れですか?」をクリックし、次のページにある「ログイン」をクリックしますとログインページが現れます。そこからログインしてみてください。
この方法で遷移がうまく行っていましたら、残るはアップグレードだけの問題となります。
Development Version へのアップグレードは、特別な事情が無い限りFTPによるアップはしないで、管理画面よりプラグインの削除と新規追加で行なってください。
2010年12月8日 6:38 AM #60943jinbei参加者動作確認できました。指示していただいた方法ですと、遷移がうまくいっています。
アップグレードは、プラグインを削除して新規追加しましたが、やはりusc-e-shop/usc-e-shop.php以外のファイルは停止中と表示されてしまいます。
2010年12月8日 6:59 AM #60944nanbuキーマスタープラグイン編集ページ は動作には全く関係が有りませんの無視していただいて結構です。むしろ誤って更新してしまうと危険ですのでそこは開かない方が無難です。
一つ確認したいのですが、現在サイドバーにあるログインウィジェットは管理パネルからウィジェットを利用していますか?それともDefaut テーマのサイドバーからコピーして利用していますかどちらでしょうか。
もし後者ですとフックが存在しない可能性が有ります。改めて最新版のWelcart Default テーマのサイドバーを確認して修正してください。
2010年12月8日 8:09 AM #60945jinbei参加者プラグイン編集ページについては安心しました。
サイドバーのログインウィジェットは管理パネルからウィジェットを利用しています。
うまくいかない原因に関係しているかもしれないので報告しておきます。
テーマのfunctions.phpにご指示通りに記述を挿入しますと、ページ遷移の動作確認はできましたがレイアウトは崩れ、ページ本文が表示されません。それから、挿入した記述を削除して元通りにしてファイルを更新しても、レイアウトが崩れたままで本分が表示されないままになります。(ファイルの編集は管理画面で行っています。)しかし、バックアップを取っておいたfunctions.phpをFTPでアップし上書きすると元通りになります。
2010年12月8日 8:52 AM #60946nanbuキーマスターjinbei さん、申し訳ないのですが、この件に関してどうしてもうまく行かない場合は、「Welcart レスキュー」にて有償で原因追求をご依頼されるか、有償サポートをご購入いただく事になります。何卒ご了承ください。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。