グーテンベルクに挑戦

 

グーテンベルクと言えば、WP利用者の中で賛否両論な新エディタで、私も使いにくそうと敬遠していたんだけども。
ブロックエディタがとても良いと人に勧められたので、クラシックエディタのプラグインを停止してみた。
つまり、これはブロックエディタで書いてます。
なんか今後カスタムフィールドがブロックエディタに置き換わっていくみたいなことを言われたので。(真偽は不明)
初見の感想。やっぱり分かりにくい。。。。
WP2.6から10年以上、テキストエディタ使ってきた身としては、やはりこのブロックエディタというのはとっつきにくい。そして、このツールバー?が邪魔。

なにより、WPのビジュアルエディタは、勝手に変なタグ入れたり、勝手にタグ消したりとかしてくれて、意図した通りにならないとか、崩れるっていうイメージがあるんだけど。
まぁ2.7の時に受け付けられたイメージなので、流石に10年もたてば改善してるのかな?

とりあえずコード書きたいならコードでも書けるらしいのでちょっとコード書いてみるテスト
と思ったら早速「コード」と「カスタムHTML」の違いにちょっと戸惑う。
コードは<pre>かな?と予測テスト↓

<img width="610" height="190" src="https://wp-etc.navich.net/wp-content/uploads/2013/04/tool.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" loading="lazy" srcset="https://wp-etc.navich.net/wp-content/uploads/2013/04/tool.png 610w, https://wp-etc.navich.net/wp-content/uploads/2013/04/tool-300x93.png 300w" sizes="(max-width: 610px) 100vw, 610px">

↑正解だったぽいので、カスタムHTMLもやってみる。↓

うむ・・・。意外と使える。。。?
CSSとか使いたいときは普通にカスタムHTMLを使えば良いだけか。
ブログレベルなら問題なさそう。がっちりデザイン組み込んだサイトとかだとどうなのかなー。

グーテンベルクってGutenbergだけど「ク」なのね?「グーテンベルグ」じゃなく?
活版印刷並みの革命って自称なんだから、それなりの自信もあるんだろうし、もうちょっと調べてみる。

Advanced Custom Fields(アドバンスドカスタムフィールド)でテキストとタクソノミーの出力とショートコード化

 

アドバンスドカスタムフィールドの出力。
テキスト

<?php if(get_field('フィールド名')): ?>
<p>フィールドラベル:<?php the_field('フィールド名'); ?></p>
<?php endif; ?>

例えば
フィールドラベル⇒商品名
フィールド名⇒product_name の場合

<?php if(get_field('product_name')): ?>
<p>商品名:<?php the_field('product_name'); ?></p>
<?php endif; ?>

タクソノミーの場合。配列なので、foreach。

<?php if(get_field('フィールド名')): ?>
<?php $term = get_field('フィールド名'); ?>
<p>フィールドラベル:<?php
foreach((array)$term as $value) { ?>
<a href="<?php echo get_bloginfo('url') . '/フィールド名/' . $value->slug; ?>"><?php echo $value->name; ?></a>
<?php if(next($term)!==FALSE){ echo ", ";} ?>
<?php } ?>
</p>
<?php endif; ?>

例えば同じく
フィールドラベル⇒商品名
フィールド名⇒product_name の場合

<?php if(get_field('product_name')): ?>
<?php $term = get_field('product_name'); ?>
<p>商品名:<?php
foreach((array)$term as $value) { ?>
<a href="<?php echo get_bloginfo('url') . '/product_name/' . $value->slug; ?>"><?php echo $value->name; ?></a>
<?php if(next($term)!==FALSE){ echo ", ";} ?>
<?php } ?>
</p>
<?php endif; ?>

例えばフィールドラベル⇒国
フィールド名⇒country の場合

これをショートコード化してみる。
テキストの場合

<?php
function tx_parts() {
if(get_field('フィールド名')):
$html .= '<p>フィールド名:' . get_field('フィールド名') . '</p>';
endif;
</code>
<code>
<?php
function tx_parts() {
if(get_field('country')):
$html .= '<p>国:' . get_field('country') . '</p>';
endif;

タクソノミーの場合。

<?php
function tx_parts() {
if(get_field('フィールド名')):
$term = get_field('フィールド名');
$html = '<p>フィールドラベル:';
foreach((array)$term as $value) {
$html .= '<a href="' . get_bloginfo('url') . '/フィールド名/' . $value->slug . '">' . $value->name . '</a>';
if(next($term)!==FALSE){ $html .= ", ";
}
endif;
return $html;
}
add_shortcode('tx', 'tx_parts');

例えばフィールドラベル⇒ブランド
フィールド名⇒brand の場合

?php
function tx_parts() {
if(get_field('brand')):
$term = get_field('brand');
$html = '<p>ブランド:';
foreach((array)$term as $value) {
$html .= '<a href="' . get_bloginfo('url') . '/brand/' . $value->slug . '">' . $value->name . '</a>';
if(next($term)!==FALSE){ $html .= ", ";
}
endif;
return $html;
}
add_shortcode('tx', 'tx_parts');

繋げて複数タクソノミーの出力を一つのショートコードで行う場合。

<?php
function tx_parts() { /*テキストタイプ*/
if(get_field('product_name')):
$html .= '<p>商品名:' . get_field('product_name') . '</p>';
endif;

if(get_field('brand')): /*タクソノミータイプ*/
$term = get_field('brand');
$html .= '<p>ブランド:';
foreach((array)$term as $value) {
$html .= '<a href="' . get_bloginfo('url') . '/brand/' . $value->slug . '">' . $value->name . '</a>';
if(next($term)!==FALSE) $html .= ", ";
}
endif;

if(get_field('country')): /*タクソノミータイプ*/
$term = get_field('country');
$html .= '<p>国:';
foreach((array)$term as $value) {
$html .= '<a href="' . get_bloginfo('url') . '/country/' . $value->slug . '">' . $value->name . '</a>';
if(next($term)!==FALSE) $html .= ", ";
}
endif;

return $html;
}
add_shortcode('tx', 'tx_parts');

sakura_pocketというディレクトリができてたので、これが何かさくらインターネットに聞いてみた。

 

昨日、いくつかのサイトでエラー(DNSルックアップエラー)が出て表示されなくなった。
原因はバリュードメインのネームサーバーで名前解決が不安定になってたことだったんだけど、
サーバ障害か?→障害情報出てない→なんかやっちゃったか?ということでサーバ(さくらインターネット)を一通り見て気が付いたのが、タイトルの「sakura_pocket」というディレクトリの存在。
ルート直下にいつの間にか誕生していた。
中身はからっぽ。
更新日付は2015/1/27となってるから、これが原因ではなさそうなんだけど、なんか障害起こってる?な状態でこんなものを見つけたので、気になる。
ググってみてもおんなじ疑問はあれ、答えは見つからなかったので、さくらインターネットに問い合わせてみた。

以下解答を頂いたのでメモ。
なんぞ?sakura_pocketって・・・?と謎にお思いの方はご参考下さい。

アカウントフォルダ配下に設置されており「sakura_pocket」フォルダは
今後のシステムで利用するフォルダになります。

詳細は追って告知することになりますが、恐れ入りますが、そのまま
触らず置いておいてくださいますよう、お願いいたします。

いずれアナウンスするので、触るなってことでした。

Facebookデバッガーでキャッシュクリアできない。仕様変更対応。

 

久しぶりにFBでキャッシュを消そうと、デバッガーからキャッシュのクリアを何度も試みているのに、一向にキャッシュがクリアされない。

よくよくデバッグ結果画面を見ると、↓こんな表示が。

When and how we last scraped the URL  ○分前

一番最近情報取ったのが○分前ですよってことかな。
実際表示されていたのは「25分前」
25分前には変更していなかったんだから、キャッシュクリア以前に、新しい情報を取れてないってことっぽい。

ではただひたすら待つしかないのか?

デバッグ結果画面を良く見ると、URLを入力した下にボタンが二つ。

Debugger

「Fetch」って、WMTでも「Fetch as Google」でおなじみ、意味としては「呼びに行く」とかいう英語なので、とりあえずこれをポチってみる。

そうすると、先述の「When and how we last scraped the URL」が「2秒前」になって、こちらの思惑通りの表示となった。
Timescreped

これで完了。

【Choromeトラブル】テキストが表示されず、ほぼ真っ白の画面表示になる

 

私ではなくて、会社の人のPCで起こった現象。
ヘルプ要請されて調べたのでメモ。

■現象
ChromeでGmailを開くと、正しく文字が表示されない。
メールタイトルや本文のテキストなどがほとんど表示されず、ほぼ真っ白な画面になる。
Gmail以外のサイトでも同様。

■環境
Windows7
Chrome37
FirefoxやIEなど他ブラウザでは再現せず。
※最近とくに何かをDLしたり、変わったことはしていない。

■結論
Windows向けに追加されたDirectWrite周りのバグ。

■対処法
・暫定対応
設定からDirectWrite を「有効」にする。
⇒既にバグ改修完了しているようなので、Chromeを最新版にすれば直る。
37.0.2062.102以降のverならOK。
Google Chrome ヘルプフォーラムの解決報告

■経過
初めググったら以下のGmailヘルプフォーラムがヒット。
https://productforums.google.com/forum/#!topic/gmail-ja/gtqkdGkSZbU
ちょっと情報古いから微妙だな・・・と思いつつ確認してみると、やはりこれでは解決できず。

Google Chrome ヘルプフォーラムを新着から眺めてくと、「テキストが表示されない 」「Chromeで字が現れない」「Google chromeの不具合 サイトを開くと一部の文字が白く映らない」「グーグルクロームの文字表示がおかしい」「chromeで正しく表示されない」「chromeの表示バグ(gmail、webサイトなどchromeサービス全般におこる事象) 」 など類似現象関連っぽいヘルプが散見・・・というか乱立。
どうやらDirectWrite周りバグっぽいということなので改修を待つこととして、暫定対処。(DirectWriteを有効に。)

暫定対処は「【トラブル】Chrome 37にしたら、サイトの文字がおかしくなる」を参考にさせて頂きました。
ありがとうございました。

XAMPPでAppaceが起動しない。XAMPPトラブルと対処方法まとめ

 

2年ぶりくらいにXAMPPを使おうと思ったら、スタートまでにいろいろ躓いたのでメモ。

トラブル1:Apacheが起動しない。

—原因:port80が使用中らしい。

—確認方法:XAMPPをインストールしたディレクトリ/install/portcheck.bat をダブルクリック。
⇒なんか画面が開いて閉じる。そしたら同じディレクトリ内にportcheck.iniというファイルができているので、これをテキストエディタで開く。開くと↓こうなってた。

[Ports]
Port80=BLOCKED
Port443=FREE
Port3306=BLOCKED
Port21=FREE
Port14147=FREE
Port8080=BLOCKED

—結果:「Port80=BLOCKED」・・・何かがすでにport80を使っちゃっているので、XAMPPがApaccheを起動できない。

—対処方法:port80を使っているアプリケーションを見つけて、停止する。

【port80を使っている子の見つけ方】
①コマンドプロンプト起動(Win+R⇒cmd)

②netstat -ano コマンドを叩く⇒ポート番号とそれを使用しているPIDの一覧が表示される。↓
cmd

③タスクマネージャーを起動し、PIDでソートして10532のものを探す。
※PIDが表示されていなかったので、「表示」メニューから「PID」を表示させました。
※さらに・・・該当するPIDがなければ「すべてのユーザーのプロセスを表示」をクリックすると出てくるはず。。

犯人は・・・・IIS(インターネットインフォメーションサービス)でした。
【IISの停止の仕方】
コントロールパネル(カテゴリ表示)>プログラム>Windowsの機能の有効化、または無効化>
で、「インターネットインフォメーションサービス」のチェックを外す。
→再起動になる。
これでport80は解放。

トラブル2:Appacheがport80でstartしたのにすぐ止まる。

原因:Skypeとの競合
これは前に使ったときにもぶち当たっていたので、初めにSkypeはオフしていたのだけど、IIS停止で再起動になったので、Skypeがまた起動してしまったいた。SKype終了でOK。

エックスサーバのベーシック認証設定で.htpasswdのフルパス間違ちゃった話

 

エックスサーバで、MTの管理画面にベーシック認証かけようとして、ちょっと躓いたのでメモ。

基本的に作り方は他のサーバと一緒。
.htaccessと.htpasswdつくってサーバにあげるだけ。

.htaccess

<Files mt.cgi>
AuthUserFile /フルパス/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
order deny,allow
</Files>

MTの管理画面入口はデフォ名がmt.cgiなので、1行めで指定。
2行目に.htpasswdの場所をフルパスで記述。

しかし何度やっても上手く行かず、パスワードの暗号化失敗してるのかと思って、他のサーバで試したけど、
他のサーバなら上手く行く。

ということでフルパスが違うのかと調べたら、違ってた。

エックスサーバのフルパスは、どうやらhome/ユーザ名/で始まるらしい。
今回、Winscpで右クリック>フルパスをクリップボードにコピー でフルパス取得してたんだけど、
これだと一番上がユーザ名になっちゃってて、それで.htpasswdを見つけられなかったらしい。

おまけ
フルパスの調べ方

 <?php
echo __FILE__;
?>

 
↑をテキストエディタに書いて、適当な名前.phpで保存。
調べたいディレクトリにほりこんでブラウザからアクセスしたら、フルパス取得してくれます。

おまけ2
.htpasswdの書き方
ID:PW
の形で書くだけ。
ただし、PWは暗号化するべし。

→→暗号化までしてくれる便利なジェネレータはこちら。
たまに使わせて頂いています。

【オーサーランク騒動】SEO業者が滅ぼされるのはこれが何度目か・・・

 

今日SEO界隈でワイワイしてた話があるので、そのことについて書いてみる。

ワイワイなってたのはコレ↓
【速報】Google「被リンクからオーサーランクに移行する」SEO業者全滅か!?
http://netgeek.biz/archives/11937
※リンクは貼りませんのでコピペでどうぞ。

因みにSEO業者はパンダアップデートとかペンギンアップデートとかの度に「絶滅」とか「全滅」とか言われてたけど、まだ全滅はしていない。
けっこうな数が看板を掛け替えたのではないかとは思うけど。

何か発表がある度、こうした極論が出るのはいつものことで、今回は「誤訳だ」とかいう方たちもいらっしゃって、カオス。

私は英語は良く分からないので、誤訳かどうかはわからないけど、ものスゴクすっ飛んだ盛大な誤訳ではないんじゃないかと思っている。

なぜなら、オーサーランクでの評価については、もう随分と前からある話で、今更何の新鮮味もない情報だから。
そして、SEO界隈にいる人間が、もう何度も何度も見聞きしてきたGoogleスパム隊長マット・カッツ氏の言葉。
「何百もある複雑なサイト評価基準(アルゴリズム)のうちのひとつにすぎない」

つまり、「リンク0→オーサーランク100」みたいなとらえ方をした人にとっては盛大な誤訳かもしれないけど、
この辺のことをきちんと知っている人間からしたら、またいつもみたいに「たくさんある複雑な評価指標の比重が少し変わる」ということを言っただけじゃないかと簡単に予想はできる。
※ただし、英語わからないから、ただの予想であって、正しい内容は知らん。
でも、そう予想ができれば「SEO is dead」みたいな極論は出てこないと思うわけで。
まぁ、わかってて煽ってるのかもしれないけども。

オーサーランクをどうやってつけるのか、そのアルゴリズムが全く分からないけど、オーサーランク主軸になると考えるといくつか疑問がある。

・Google+が過疎ってるのにオーサーランクは正しく機能するのか?
・Google+のアカウントを持ってないと評価の土俵にも上がれないのか?
・個人が高オーサーランカーになったら、商売ができちゃうんじゃないか?
→高オーサーランカーの僕が、○万円であなたのサイトに言及(←これだって結局リンクなんじゃないかと)しますよ。みたいな。
・そして高オーサーランカーを束ねる組織とか出てきて、やっぱりイタチごっこなんじゃないか?
・著者偽装できないのか?権威ある人のなり済ましが出てこないか?
・権威が必ずしも正しい情報だけを発信するわけではない。
・権威なんかなんにもないぺーぺーだって、調査に基づいた正しく詳細な情報を発信することはできるはず。
・権威が偽物だったらどうするのか?
→「神の手」と称された考古学捏造の人やIPS細胞の虚言癖の彼のような人物が権威として高ランクを付けられらりしないのか?

軽く考えただけでこれだけの疑問が出てくる。
よく考えたらもっといっぱい出てくるんじゃないかと思う。
これらの疑問からも、やっぱり「オーサーランク一辺倒」とかになることはないと思うし、リンクが無価値になることはないと思う。
SEO業者だって、コンテンツ屋とか、Schema.orgに乗っ取ったマークアップ屋とか、コンサルとかの形には変化するだろうし、すでに変化してるとこもあるけど、なくなりはしないと思う。
コンサルがコンテンツまで作ってくれるとありがたいけどね。業界理解が必要だからコンサルタントの地頭、文章力とかのスペックが高くないと無理だろうな。

ただ、リンク販売業者はなくなるとは思うけど。
なぜなら、評価を得られるリンク集を作るコストを考えると、リンク販売は、全く割に合わないし、商売としての旨味がなにもないから。
いつまでも、糞リンク張って何も知らない善良な中小零細の経営者を騙して詐欺ろうとするなら、しばらく残るかもしれないけど、そういうのって結局悪評立ってうまくいかなくなるだろうし、あと数年もしたら(そんなにかからないかも)糞リンクが無駄どころかリスクしかないってことを多くの人が知るようになるんじゃないかな。

とまぁ、騒動を見ながらそんなことを考えていたんだけど、英語わかんない自分としては、考えるだけで、誰かが正しい訳を出してくれるのを待つしかなかったりする。(スタートレックって言ったのとジャスティンビーバーって言ったのはわかった。)
マットカッツ氏の動画の正しい訳がわかる方がいらっしゃったら教えてください。

さくらインターネットの海外IPフィルタがGoogle botを拒否しちゃって順位ガラった話

 

【起こったこと】
サーバがGoogle botを拒否ってしまい、順位下落。
【対処】
さくらインターネットにて「国外IPアドレスフィルタ設定」を「無効」に。
【結果】
インデックスされ、翌日には順位元通り。

【残った疑問】
同じサーバに入っていても、Google botを拒否(403)したサイトと、何にも変化のないサイトがある。
この違いは何?

【詳細・経緯】
3月下旬の連休明け、某キーワードで常に1位だったサイト(A.comとします)が10位になっていた。
大したキーワードではなく、古いサイトでSEO対策も一切していないのだけど、タイトルのおかげで1位になっているようなサイト。
それが急に下落。
調べると、そのキーワードで1~10位のサイトはほぼ順位変動がなく、A.comが下落したことにより、1ランクずつ上がっているだけだった。

これはなんだと思い、ウェブマスターツールで調べると、クロールエラーが大量発生していた。
Fetch as Googleをポチってみると、Googlebotを拒否しているというメッセージが・・・。

もちろん、robots.txtなんて弄っていない。弄っていないのに急に拒否をし始めた。
初めに疑ったのが、サーバ障害。

A.comはさくらインターネットを使っているので、さくらの障害情報を見るも、それらしい情報はなし。
代わりにみつけたのが↓

この度、2014年3月13日(木)より提供開始いたしました、「国外IPアドレスフィルタ設定」の機能が、「さくらのレンタルサーバ(マネージドサーバ、メールボックス含む)」サービスの全サーバに設定完了いたしましたのでお知らせいたします。

 「国外IPアドレスフィルタ設定」により、国外IPアドレスからのアクセスを制限し、多発する海外からの不正なアクセスを防ぎます。
 この設定はサービスのご利用に影響がないよう制限範囲を限定しており、機能の無効化も可能です。

[お知らせ] レンタルサーバサービスのセキュリティ強化(国外IPアドレスフィルタ設定)完了のお知らせ

Google botって海外IPじゃないのかと思い、「国外IPアドレスフィルタ設定」を無効にして、再Fetch。
するとインデックスに成功。
この対応後、1日で順位は1位に戻って今日まで安定。

まぁ大した被害はなく結果オーライではあるのだけど、同じサーバでも、WPのサイトは無事、古いMTのサイトがダメだったので、違いを調べていたところ、2CHのレンサバ板にて

362 :名無しさん@お腹いっぱい。:2014/03/22(土) 06:54:25.66 0
php.cgiを設置していたらドメイン単位でgooglebotにアクセス禁止(403)を
返してる。
説明にはphp.cgiはファイルだけアク禁になるって書いてるのに。
さくらはろくにテストもしないで、今回の措置をやったんだろうな。
気付かずにサイト飛ばす人、続出しそう。
http://toro.2ch.net/test/read.cgi/hosting/1389803293/362

というレスを発見。

たしかにA.comにはphp.cgiは置いてある。WPにはない。

php.cgiだけ拒否するのなら良いのだけど、ドメインごと拒否されたらたまらん。
ということでさくらインターネットに問合わせ。

一両日どころか、けっこうしばらくしてから帰ってきた返事が以下

さくらのレンタルサーバではCGIモードのPHPは拡張子.phpにて動作する
よう設定されております。お客様にて独自に設定を行っていただき、
拡張子.htmlで運用していただくことについて特に制限はいたしており
ませんが、不具合が発生いたしました場合も弊社にて対応や調査はでき
かねます。

php.cgiを経由して全てのhtmlファイルを動作させるためにドメイン
単位での影響が出ているものと推測いたします。

ビジネスプロプランではモジュール版のPHPをご利用いただき、適切に
.htaccessで記述を行なっていただければ、php.cgiの設置なしに拡張子
.htmlでPHPのコードを動作させる事が可能でございます。

※設定方法に関するサポートは承っておりません

モジュール版PHPを利用し、php.cgiの運用を停止をご検討ください。

「仕様です」ってことだろうか。(php.cgiは許可していないから、そんなもの設置してどう動いたって知らないよってこと?)
今回は海外IPフィルタをオフにしたので、php.cgiについてはそのままにしているけど、海外IPフィルタをオンにできないこと以外に問題はなさそう。

htmlでphpを実行するための.htaccess記述については、以前のエントリを参照。
※そういえばたしかにこのエントリーでも「公式では不可能」ってなってた。

362さん、ありがとうございました。

【SEO】ペナルティを引き継がずにユーザーをリダイレクトさせる方法メモ

 

ペナルティをどうしても解除できず、ドメインを捨てるしか手段がなくなったときのためのメモ。

通常リダイレクトでは、元のサイトの評価を引き継ぐので、ペナルティを引き継いでしまう。
⇒リダイレクトを2回かけ、その中間のページをrobots.txtでブロックする。

・ペナっちゃった.com ←ペナって捨てるドメイン
・new.com←新しいドメイン
ペナっちゃった.com⇒ペナっちゃった.com/hoge にリダイレクト⇒new.comにリダイレクト
               |——–> このページ(ペナっちゃった.com/hoge) をブロック。

これで、サイトの評価は引き継がずに、ユーザーのみリダイレクトさせられる。
ただし、悪い評価だけじゃなくて良い評価も0になるので、事実上0からの再スタートとなる。

詳細⇒http://www.suzukikenichi.com/blog/redirecting-without-forwarding-penalty/