固定ページにも抜粋をつける

固定ページでも、子ページを一覧で表示するなどの使い方をする場合があります。

その際に任意に設定できる抜粋がないと非常に困る(WPデフォルトでは無い)

固定ページでも抜粋を付ける場合は、使用しているテーマのfunction.phpにこれを追記します

add_post_type_support( 'page', 'excerpt' );

これで固定ページの編集画面にも抜粋が表示されるようになります

 

総合管理者 | 2017年12月14日 | コメント(0) | トラックバック(0) | CMS関連

includeしたものを変数に入れる【PHP】

例えば

<?php
echo "Hello world";
?>

という内容が書かれた、「include_hoge.php」というファイルがあるとします。

そして、これを別のファイル(hoge.php)で読み込み、include_hoge.phpの出力内容を変数に入れたいと思うことがあります。(実際はこんな単純な出力内容ではありませんが)

単純に考えると

$hensu = include(include_hoge.php);

となりますが、当然ながらこれではうまく行きません。

変数に放り込まれないどころか、ただ単にechoされた内容が表示されてしまいます。

 

次に考えられる方法は「file_get_contents」を使うことかと思います。

$hensu = file_get_contents("http://xxxxxx.net/include_hoge.php");

とすることにより、include_hoge.phpの出力内容を変数に入れることが出来ます。

しかし、そもそも「file_get_contents」が使用できないように制限されているサーバーや、include_hoge.phpにベーシック認証をかけている場合は取得ができません。(問題がなければこの方法でも良いかと思います)

 

最終的な方法としては下記となります。

ob_start();
include(include_hoge.php);
$hensu = ob_get_contents();
ob_end_clean();

これで、「file_get_contents」同様、「include」でも出力内容を変数に入れることが可能となります。

総合管理者 | 2017年12月13日 | コメント(0) | トラックバック(0) | PHP関連

wp_insert_attachmentだけではサムネイルが作られない

フォームから送られてきたファイルをメディアに登録されるようにするプログラムを作っていたのですが、実際にメディアには登録されるけど一覧でサムネイルが表示されない・・・

で、Codexをよく見たら、wp_insert_attachmentのあとに下記2つの関数も実行しなくてはならないとのこと

wp_generate_attachment_metadata
wp_update_attachment_metadata

さらにこの関数を実行するには、

require_once( ABSPATH . 'wp-admin/includes/image.php' );

の必要があります。

つまりこんな感じ。


require_once( ABSPATH . 'wp-admin/includes/image.php' );

$attachment = array(
'guid' => "(ファイルのURL)",
'post_mime_type' => "(ファイルのタイプ)",
'post_title' => "(ファイルのタイトル)",
'post_content' => '',
'post_status' => 'inherit'
);

$attach_id = wp_insert_attachment( $attachment, "(ファイル名)", 0);
$attach_data = wp_generate_attachment_metadata( $attach_id, "(ファイルのパス)");
wp_update_attachment_metadata( $attach_id, $attach_data );

これで、メディアに登録される際にサムネイルも生成されるようになりました。

総合管理者 | 2017年12月13日 | コメント(0) | トラックバック(0) | CMS関連

[半角/全角]キーで入力タイプを切り替えるたびに出る通知がうざい【Windows10】

Windows10のアップデートをしたら、[半角/全角]キーで入力タイプを切り替えるたびに、なんか画面の真ん中に「あ」「A」と表示されるようになりました。

すぐ消えるので良いけど、その裏で入力とかしていると煩わしくてしょうがない。

これを非表示にする方法についてはいろいろなサイトで紹介されています。

でも、自分のPCでは、右クリックしても下図のように表示されて、なぜかプロパティが選択できない。(Google 日本語入力を入れてるから?)

このような場合は、まず一番下にある「設定」を選択してください。

そうすると、下のようなウィンドウが開きますので、右にある「オプション」を選択してください。

言語のオプションウィンドウが開きますので、入力方式「Microsoft IME」の右にある「オプション」を選択してください。

これでようやくMicrosoft IMEの設定ウィンドウが開くので、「IME入力モード切替の通知」の「画面中央に表示する」のチェックを外して、「OK」ボタンを押してください。

言語のオプションウィンドウに戻ったら「保存」ボタンも押してください。

これで切り替えるたびに通知されることが無くなります。

 

総合管理者 | 2017年07月17日 | コメント(0) | トラックバック(0) | WEB関連全般

Movable Type6系でフォルダー・カテゴリーが保存できない【Ajax error: error】

今日、Movable Type6でフォルダーを作成し、「変更を保存」ボタンをクリックしたところ、以下のエラーがアラートで帰ってきました。

Ajax error: error

・・・なにこれ?

さらにカテゴリーのほうでも、同様に上記のエラーが出て保存できない。

どうしてもカテゴリーとフォルダーを追加しなくてならなかったため、phpMyAdminを入れて、そっちでデータベースに直接入れてみようかと思ったところ、なんかこっちでもエラーが出てSQLがちゃんと実行されない!?

MTに引き続きphpMyAdminでも起こるって、ほんとなんだこれ!

と思っていたら、後輩が「もしかして、WAFのせいかも」との一言。

なるほど、可能性はあると思い、サーバーのコンパネに入りWAFの設定を変更したところ、正常に動作するようになりました・・・

あー、冷や汗かいた・・・

WAFってセキュリティ高めてくれるのは良いんですが、どうも苦手です。

ちなみに今回のサーバーはzenlogicでした。

皆さんも注意しましょう。

総合管理者 | 2017年07月11日 | コメント(0) | トラックバック(0) | CMS関連 | サーバー関連

予約公開ができない場合【WordPress】

WordPressで予約公開ができない場合、原因は色々とあります。

このことは色んなサイトで紹介されています。

でも、たまに公開に失敗するなど原因がよくわからない不具合も起こります。

WordPressの予約投稿は、
一定のアクセスがないと実行されないという仕様になっています。

アクセスがないブログは予約投稿ができないといっても過言ではありません。

WordPressの予約投稿に失敗する原因と見るべき重要ポイントのまとめ! | 自作PCテクニカルセンター

という話まであり、正直Wordpressの予約公開はあまり信用できません。

 

ということで、解決方法として、こんな感じのプログラムをheader.phpの先頭に入れてみました。

if(is_home() || is_front_page()){
	//予約の投稿のみ取得(MAX20件)
	$get_posts = get_posts(array(
		"posts_per_page" => 20,
		"post_type" => "any",
		"post_status" => "future"
	));

	if($get_posts){
		foreach($get_posts as $get_post){
			//現在が予約日時を過ぎている場合
			if($get_post->post_date < current_time("Y-m-d H:i:s")){ 
				//公開処理 
				$save_post = array(
					"ID" => $get_post->ID,
					"post_status" => "publish"
				);
				wp_update_post($save_post);
			}
		}
	}
}

※トップページアクセスの場合のみ反応するようにしています。

post_statusがfutureになっている記事だけ取得し、予約日時が過ぎているものだけ、publishに更新するという簡単なプログラム

ちゃんと動いているし、負荷もそれほどかからないし問題なさそう。(※動作に責任は持ちません)

 

 

総合管理者 | 2017年06月05日 | コメント(0) | トラックバック(0) | CMS関連

Guetzliで10回ほど圧縮を繰り返してみた

Googleが提供するJPEGエンコーダー

こちらのサイトで紹介されている手順通りに行ってみたら簡単にJPEG画像を圧縮することができました。

Google製JPEGエンコーダーGuetzliの使い方【図解で簡単】

サイズが1.5MB程度あった画像がいきなり500kbまで減ったりとなかなかの圧縮率で、しかも画質は落ちない(わけではないだろうけど、少なくとも目測ではわからないくらい)。

これはすごい!

でも圧縮に10秒以上かかるんですよね~(画像によってはもっとかかる)
そこがネック。

あと、うっかり圧縮済みの画像をもう一度圧縮しちゃったらどうなるんだろうと思ったので、ためしに10回位圧縮を繰り返してみました。

画質設定は上記のサイトで設定されているとおり88(--quality 88 ちなみに84が下限)

以下リンク先を開いてから、確認してみてください。

オリジナル(1.59MB)

(さらに…)

総合管理者 | 2017年05月16日 | コメント(0) | トラックバック(0) | WEB関連全般

WordPressのマルチサイトで参加サイトが表示されない

マルチサイト化されているWordpressのサーバーを移転したところ、参加サイトが表示されなくなってしまいました。

↓この部分

もちろんログインしたアカウントはすべてのサイトに所属しています。

プラグインのせいかと思って全部切ってみたのですが、治らず。

移転時にバージョンアップしたからかとも思いましたが、他のサイトで使っている同じバージョンのWordpressでは、こんな問題は起きたことがありません。

移転中だったのでベーシック認証をかけていたのですが、まさかこれじゃないだろうと思いながらも試しに解除してみたら、表示されるようになりました!

原因はベーシック認証!

こんなことあるのか・・・

ちなみに、一度表示されるようになったら、以降は再びベーシック認証をかけてもちゃんと表示されます。

総合管理者 | 2017年03月08日 | コメント(0) | トラックバック(0) | CMS関連

WordPressのバージョン4.7と4.7.1はヤバイ

ちょっと古い情報ですが、Wordpressのバージョン4.7と4.7.1はかなりヤバイ脆弱性があるそうです。

WordPress の脆弱性対策について:IPA 独立行政法人 情報処理推進機構

WordPress 4.7, 4.7.1 はAPIに致命的なバグがあって認証無しで誰でも記事を改ざんできちゃうっぽい! - かもメモ

上記のサイトに方法が記載されておりますが、簡単に改ざんできてしまうとのこと。

簡単過ぎる!怖い!

4.7から4.7.1へのアップデートは、PHPMailerの件ですぐにアップデートされることは予想しておりましたが、またすぐに4.7.2へのアップデートでしたので、何事?と思っておりましたが、これはかなりやばい脆弱性ですね。

すぐにアップデートするのは考えものですね・・・

ちなみに、Search Consoleでもこのような警告が出てしまう始末

貴サイトが WordPress の古いバージョンである WordPress 4.7.0 or 4.7.1 を実行していることが判明しました。古いバージョンやパッチを適用していないソフトウェアは、ハッキングやマルウェアの攻撃を受けやすくなり、貴サイトの訪問者に被害が及ぶことがあります。そのため、サイト上のソフトウェアをできるだけ早く更新することをおすすめします。

おすすめどころではない、必須事項でしょ。

自分のブログも一瞬だけ4.7.1にしておりましたが、すぐさま4.7.2にアップデートしました。

総合管理者 | 2017年02月14日 | コメント(0) | トラックバック(0) | CMS関連

robots.txtが無い場合のアクセスは404で返さねばならない

サーバとドメインを移転したお客さんのサイトが、全然インデックスされないとの連絡をいただきました。

ドメインも変わってるのだから、それはそうだろうとも思ってたんですが、移転したのは3か月くらい前だし、おかしいってことで調べてみました。

あやしいところでは、robots.txtやHTMLのmetaタグでクロール禁止設定しているあたりですが、robots.txtはそもそもないし、HTMLのmetaタグもほぼ無いに等しいほどシンプル。

リダイレクトも旧サーバ・旧ドメインから301できっちり転送しているので問題ない。

仕方ないので、Search Consoleを設定して調べてみたところ、下図のエラーが出てました。

(Search Consoleの左メニュー>クロール>robots.txtテスターを開くと出てきたエラー)

現在 Google で取得できない robots.txt ファイルがあります。この場合、Google が robots.txt を取得するまでサイトのクロールが停止されるか、前回取得した robots.txt ファイルが使用されます。

robots.txtなんてファイルは作ってないし、実際サーバ上にも無いし、おかしいなと思ってrobots.txtにブラウザからアクセスしてみたら、htaccessのリライトルールのせいで、404エラーでもない変なエラーページが開いてしまいました。

そして下の記事を発見。

robots.txtがこんなに重要だったとは。。。身をもって知りました

なんとまあ、robots.txtは存在してちゃんと設定されているか、または無いなら404エラーで返さないと、Googleはインデックスしてくれなくなるらしい。

正直、インデックスされないように設定することのほうが少ないため、robots.txtなんてあんまり気にしたことありませんでした。(通常は無いなら無いで404になるし)

気をつけねば。

総合管理者 | 2017年02月11日 | コメント(0) | トラックバック(0) | CSS関連

Copyright(c) 2010 - 2024 ダリの雑記