アップデートに失敗したワードプレスの復旧

桜の遅い新潟ですが、それでも花見に行く前に葉桜になりそうです。

何の脈絡もありませんが、今回もWordPressのはなしを。

wp_up01

ダッシュボードから簡単にシステムのアップデートができるWordPressですが、たまに更新に失敗して、「メンテナンス中」から復旧できなくなることがあります。プラグインのアップデートでもあります。
なんかアップデートが進まないなぁ、と思ってサイトを表示させようとしても、メンテナンスモードのまま、

wp_up02

と、なって、何も受け付けなくなってます…。
プラグインとの相性か、サーバーのPHPのバージョンか、原因は様々です。
ログインも出来なくなるので焦りますが、以下の方法で復旧できます。

慌てずFTPでインストールフォルダにあるファイル、「.maintenance」を削除しましょう。
とりあえず元に戻ります。
ファイルそのものは一時ファイルですので、削除しても問題ありません。
あとは原因を探ってから、再度更新しましょう。

私は先日この症状が出た時は、WordPress側の新バージョンが出るのを待ちました。
消極的解決法。


設置済みワードプレスのURL変更方法

暖かくなってきました。新潟の桜は次の週末あたりに咲くようです。新潟市内だと、鳥屋野潟の桜がキレイですね。

5c2bc9d11e0f89c6a5ee57771145c6d1_m

ここしばらく、WordpressのURL変更を行う事が数件あり、だいたいやり方が固まったので、手順を公開してみます。
phpmyadminは使いません。ドメインの変更がないことが前提です。

はじめに

テストURLでとりあえず構築したワードプレスを正式URLに変更することはよくあると思います。
または、考え無しにテストのつもりで構築してしまい、後から変えたくなったりとか。クライアントの気まぐれでアドレス変えてくれとか…。まぁ色々ありますよね…。

★手順★
1.設定画面で、ブログのURLを変更する。
2.データベースの該当箇所を書き換える。
3.必要があれば、URL(ドメイン)を変更する。
4.確認する。

例として、
旧 http://www.agn-web.com/test04/
このブログのURLを
新 http://www.agn-web.com/niigata/
に変更するケースで説明します。

1.設定画面で、URLを変更する。

ダッシュボード→設定で、
・Wordpressアドレス(URL)
・サイトアドレス(URL)
を両方変更し、保存します。
blog_wpurlch_01
保存を押すとアクセスできなくなって、404がでますが、気にしません。

2.データベースの該当箇所を書き換える。

serch-replace-DBというPHPで書かれたツールを使います。
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
こちらからzipファイルをダウンロードしてください。
解凍したらフォルダごと、ワードプレスのルートディレクトリにアップロードします。
フォルダ名は仮にSRDBとしておきます。
ブラウザで、SRDBフォルダにアクセスします。
http://www.agn-web.com/test04/SRDB/
blog_wpurlch_02
ワードプレスで使われているDBを自動で読み込んでくれます。
このツールを使って、DB内のURLを書き換えます。
今回は、agn-web.com/test04をagn-web/niigataに置き換えます。
dry runでテストできます。明らかな間違いが無ければ、live runで実行します。
view changeで変更箇所を確認することも出来ます。

3.URLの変更

今回は、サーバー上のディレクトリ名をtest04からniigataに書き換えます。
FTPクライアント上で変更すると良いでしょう。

4.確認。

URLの変更のみなら、即座に反映されますので、変更後のURLで表示できるかどうか確認します。
チェックポイントとしては、
・変更後のURLでアクセスできるか。
・見た目で画像などがきちんと表示されているかどうか。
・画像のリンク切れがないか。
・ページ遷移のリンク切れがないか。
等を確認します。特にテーマをカスタマイズしていた場合、URLを記入している箇所は要注意です。
無事に変更できたことを確認したら危険ですので、必ずSRDBフォルダを削除しておきます。

5.注意

・変更までにDBのバックアップを取りましょう。失敗すると全てのデータを失いかねませんので、慎重に。
・上記手順を間違えると、管理画面に入れなくなりますので、ご注意を。
・元に戻せるデータを用意してから、作業するのが基本です。
・上記はWordpressのversion4あたりの話です。
・どうにもならなくなったら、新規構築する割り切りも大事。
お約束ですが自己責任で。絶対に失敗できない方はご依頼ください。
・色々書きましたが、サーバー引越しよりはラクです。引越しの時はwp-configの書き換えなども必要です。


特定のユーザーの場合にはカテゴリをあらかじめチェックする【WordPress】

すっかり春めいてきまして。みなさんの花粉症の具合はいかがですか?

私自身は平気なのですが、まわりの花粉症の人たちをみると辛そうで・・・

それよりも私は春先特有の猛烈な眠気に困っています。間断なく春の眠気が襲ってくるのです。強敵です。手強いです。眠いです。

いつものことじゃないのかって?いやー、まぁ。。。

150327

さて、今日はWordpressのお話で。

現在投稿するユーザーが複数入るポータルサイトみたいのを作ってまして。

記事書く時にカテゴリーのつけ忘れって、結構あると思うのですよね。それで、特定のユーザーの場合は、必ずあるカテゴリに初めからチェックが入った状態にしたいな、と。

ユーザー権限で分岐できればもっとカンタンだったかもなのですが、今回はjQueryで処理しました。

 

条件

  1. ユーザーのプロフィール項目にカスタムフィールド(ACF使用)でタイプ別のチェック項目を作っている。
  2. 前記チェック項目とslugが対応したカテゴリを作ってある。

 

処理

  1. ユーザーのプロフィール情報から該当するチェックボックを配列に入れる。
  2. slugのカテゴリIDを取得する。
  3. ダッシュボードのカテゴリのチェックボックスには「in-category-カテゴリID」のIDが付与されるのを利用し、対応する「in-category-カテゴリID」のチェックボックスの’checked’を’checked’にする。
  4. 2、3の処理をforeachでプロフィール情報のチェックボックス分行う。

 

コード

※function.phpに記述

function check_cat_type() {
    //ユーザーID取得
    $user = wp_get_current_user();
    $userID = $user->ID;
        
    //type 
	/* プロフィール情報とカテゴリの共通するスラッグ */
    $type01 = 'type01';  
    $type02 = 'type02'; 
    $type03 = 'type03'; 
    $type = 'profile_type';
	/*  'profile_type'はプロフィール情報のカスタムフィールドのslug */
    //ユーザーのタイプ取得
    $profile_type = get_the_author_meta( $type, $userID);
    
    if($profile_type != ''){
        foreach ($profile_type as $thistype){
            //カテゴリーIDの取得
            if($thistype == $type01){
                $idObj = get_category_by_slug( $type01 );
            }elseif($thistype == $type02){
                $idObj = get_category_by_slug( $type02 );
            }elseif($thistype == $type03){
                $idObj = get_category_by_slug( $type03 );
            }
            $cat_id = $idObj->term_id;
            
            //jQueryでチェックボックスに該当するチェックボックスにチェックを入れる
            $script_type = '<script type="text/javascript">';
            $script_type .= 'jQuery(document).ready(function($){';
            $script_type .= 'jQuery("input#in-category-' .$cat_id  .'").attr("checked", "checked");';
            $script_type .= '});';
            $script_type .= '</script>';
            echo $script_type;
        }
    }
}
add_action('admin_head', 'check_cat_type');

 

今回はコチラを参考にさせていただきました。ありがとうございます!

記事投稿時に指定したカテゴリーのチェックボックスを選択済みにする

 

今の所これだと、編集時にも必ずチェックが入るんですよね。

あえてチェック外したいなっていうときは忘れないようにですねー


一癖あるゾ COOKIE….

どうもKazです。

はじめて…と言っていい程、まともにcookieを触る事になりまして…
まぁ、さわったんですがね。
コイツが以外と一癖あるなって改めて思ったので、忘れないように書いとこうと思います。

今回はPHPで扱ったのですが、読み・書きはJqueryで扱うよりもカンタン♪
フォームのPOSTで渡す動きが飲み込めていれば、カンタンにおいしくお使い頂けます。

ただ、動きが…この動きが独特で…気づくまで頭を抱えてました。

【cookie】の生態
・いつでも読める、いつでも書ける。
・変数にもカンタンに内容を入れられます。
・読み込んで加工を加え書き込み、また読み込むと”加工前の内容”が入っています。
・cookieの削除を行っても”消えません”。

この生態の後半2つ。
通常の変数やレコードの書き込みに慣れてすぎていると、まったく感覚がつまめません…

書き直したのに、変わらない!!
消したのに、まだ有る!!

まぁ、扱い慣れている人ならば『何言ってんだ』と思うかもしれませんが…
ページを再度読み込まない限り内容が変わらないって言うのは、慣れません!!

cookieを扱う際は、書き込みは気にしなくて良いのですが
リアルタイムに内容を扱う際は、特定の変数に入れて
その変数をリアルタイムに変わるcookieとして使いましょう。

あとは、リロードの対策とcookieの賞味期限の調整をお忘れなく。

screenshot