SQLの窓

2018年04月14日


WordPress の投稿画面のカスタマイズ3つ / フォント・記事リンク・一覧のリンク

PHP を解っていても、WordPress のカスタマイズとなると、インターネットに頼るしかありません。

投稿のテキストエリアのフォントを変更

まず最初に投稿のテキストエリアのフォントを変更したかったのですが、最初見つけた『editor-style.css』を使う方法はうまくいかなかったので、もっとダイレクトに function.php 内で行う方法を見つけました。

WordPress投稿画面 テキストエディタのフォントを変更したい

しかし、ここのコードは HTML の出力を echo で行っていたのでカスタマイズには不向きです。最初 PHP タグを閉じてやろうかと思いましたが、それだと失敗した場合影響が大きくて一般には不向きなのでヒアドキュメントで実装しました。
function change_editor_font(){

print <<<STYLE
<style>
textarea#content.wp-editor-area {
	font-family: "ヒラギノ角ゴPro W3","Hiragino Kaku Gothic Pro","メイリオ",Meiryo,"MS Pゴシック",Verdana,Arial,Helvetica,sans-serif;
	font-size: 16px;
	color: #000000;
}
</style>

STYLE;
}
add_action('admin_head', 'change_editor_font');


投稿時の記事リンクをクリックした場合新しいしいタブを開く

これは、『投稿画面のパーマリンク編集部分とクイック編集を非表示にする方法』という記事内にあったコードを転用しました。

※ デベロッパーツールで見ると、id="sample-permalink" となってるリンクです。
add_filter( 'get_sample_permalink_html', 'hide_permalinkedit' );
function hide_permalinkedit( $permalink_html ) {
  $permalink_html = preg_replace( "/<a /" , "<a target=\"_blank\" " , $permalink_html );
  return $permalink_html;
}


投稿一覧の記事リンクをクリックした場合も新しいしいタブを開く

▼ このリンクです


さすがに、function.php 経由ではできそうにも無かったので直接変更しました。アップデートで元に戻ると思いますが、まあそのたびに変えればいいので。

みつけるのに、まずデベロッパーツールで見たら、 rel= があったのでローカルに 『wp-admin/includes』をダウンロードして JGREP というフリーソフトで検索しました。

※ JGREP 2.0.5 はWin7 でも動作する、テキスト内文字列検索のできる結構人気の高いフリーソフトです





これで、class-wp-posts-list-table.php の中の該当部分を変更しました。
		if ( is_post_type_viewable( $post_type_object ) ) {
			if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) {
				if ( $can_edit_post ) {
					$preview_link = get_preview_post_link( $post );
					$actions['view'] = sprintf(
						'<a href="%s" rel="bookmark" aria-label="%s">%s</a>',
						esc_url( $preview_link ),
						/* translators: %s: post title */
						esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ),
						__( 'Preview' )
					);
				}
			} elseif ( 'trash' != $post->post_status ) {
				$actions['view'] = sprintf(
					'<a target="_blank" href="%s" rel="bookmark" aria-label="%s">%s</a>',
					get_permalink( $post->ID ),
					/* translators: %s: post title */
					esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $title ) ),
					__( 'View' )
				);
			}
		}





タグ:WordPress
posted by lightbox at 2018-04-14 13:25 | PHP | このブログの読者になる | 更新情報をチェックする

2016年05月05日


レンタルサーバで PHP のバージョンを 5.4 から 5.6 に変更する時の注意事項

PHP 5.4 までは default_charset に値が入っていませんでした。しかし、5.6 では default_charset = UTF-8 となるので日本語が化ける可能性がとても多くなります。そこで、php.ini の中に以下のように設定を追加します
default_charset = 

こうすると、PHP 5.4 と同じ no_value 設定になります( phpinfo 関数で確認します )



但し、その php ファイルが参照できる範囲に別の個別の php.ini があると、その設定で全て上書きされるので注意して下さい。



posted by lightbox at 2016-05-05 14:36 | PHP | このブログの読者になる | 更新情報をチェックする

2015年06月25日


【3大手法】 PHP で変数を埋め込んだ画面定義を外部ファイルにして、ループ内で展開する

外部ファイルを読み込む手段としては二つあって、一つは一般的な require で行います。もう一つはテキストファイルとして file_get_contents を使用します。

以下のサンプルソースの実行時の環境としては、データベースに対して接続した後、select 文を実行して行データをループで取得しているという前提です。

require 使った標準的な手法

この方法は PHP のあたりまえの記述で、想定通りの結果になる手法です。ただ、外部ファイルの埋め込み方法の記述も一般的になる為、変数埋め込みの記法が面倒で、画面作成やメンテナンスに時間がかかりますし、他の目的への転用は全くできません。
// 画面作成
print "<table>";
while ($row = $result->fetch_array(MYSQLI_BOTH)) {

	// 行の繰り返し
	require("view_row.php");

}
print "</table>";

<tr>
	<td class="left"><?= $row["社員コード"] ?></td>
	<td class="right"><?= $row["氏名"] ?></td>
</tr>


file_get_contents 使った手法

この方法は、画面定義用の文字列を単純に外部ファイルにして、テキストデータ内の変数を eval を使って置き換える手法です。この場合、変数部分以外も単純な文字列なので、正規表現による置換や単純な置換の対象となりますし、利用方法はいろいろな場面であらわれると思います。( SQL 文の定義にも有効です )

ただ、変数の記述部分のルールとして、連想配列部分の文字列はシングルクォートで書く必要があります
// 画面作成
print "<table>";
while ($row = $result->fetch_array(MYSQLI_BOTH)) {

	// 行の繰り返し
	$view_row = file_get_contents("view_row.txt");
	$view_row = str_replace('"', '\\"', $view_row );
	eval("\$view_row = \"$view_row\";");
	print $view_row;

}
print "</table>";

<tr>
	<td class="left">{$row['社員コード']}</td>
	<td class="right">{$row['氏名']}</td>
</tr>



require の中で、ヒアドキュメントを使う方法

この方法が一番簡単で単純で、本来のヒアドキュメントの目的をしっかり使ったものです。難しい問題は全く無く、自然に使える方法です。

ここでは、print を外に出して使っていますが、view_row.php 内で print してしまってもかまいません。
// 画面作成
print "<table>";
while ($row = $result->fetch_array(MYSQLI_BOTH)) {

	// 行の繰り返し
	require("view_row.php");
	print $view_row;

}
print "</table>";

<?php
$view_row = <<<VIEW_ROW
<tr>
	<td class="left">{$row["社員コード"]}</td>
	<td class="right">{$row["氏名"]}</td>
</tr>
VIEW_ROW;
?>

いずれも関数化する事は可能ですが、テキストを外部に定義して管理するという目的においては、file_get_contents を使う方法が最も優れています。( 画面作成の場合、文字列を取得するだけで後で使うという選択肢のほうが現実的です )

require は、その場で書いてしまう場合において、一般的なメンテナンス性が向上するはずです。

関数化する場合は、埋め込む変数にスーパーグローバルの $GLOBALS を使うといいです。


タグ:PHP
posted by lightbox at 2015-06-25 11:14 | PHP | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり