Event Organiserのカスタム☆

Event Organiserのカスタム☆

最近、ブックマークなんかしていたページが、次に見に行くともうないってことが多かったので自分のブログにもメモさせてもらいたいと思います。
元は こちらです。
webooooo 様

Event Organiser ワードプレスでイベントサイトを作れるプラグイン


Event Organiser ワードプレスでイベントサイトを作れるプラグイン

Event Organiser

ワードプレスでイベントサイトを作る場合、「Event Organiser」というプラグインがおすすめです。

このプラグインの備忘録を公開します。

カスタマイズするファイルは以下のファイルです。

イベントアーカイブ: archive-event.php
イベントページ: single-event.php
会場ページ: taxonomy-event-venue.php
イベントカテゴリページ: taxonomy-event-category.php

テーマカスタマイズ↑ 対象のファイルをテーマフォルダ直下に入れるとOK

——————————————————————————-
ショートコードのカスタマイズ
shortcode-event-list.php を テーマフォルダ直下に入れるとOK

ヘルプ
http://docs.wp-event-organiser.com/shortcodes/

更新ルール

◆複数日にわたり、イベントがある場合
・開始日と終了日は同じ日付にする
・繰り返し:カスタム
・繰り返し追加/削除 日付を表示 で複数日選択すること

◆エラーと思った現象 カテゴリーをクリックしてから一覧が表示されなくなった
設定→「過去のイベントを表示する」のチェックが外れていた

◆ファイル構造
カレンダーの日付押した時のデザイン
archive-event.php

◆ショートコード(本文中に指定)
カレンダーを表示
[eo_calendar]

イベント一覧を表示
[eo_events event_start_before=”now”]

今月のイベントを表示
[eo_events event_start_after=”first day of this month” event_end_before=”last day of this month”]

先月のイベントを表示
[eo_events event_start_after=”first day of -1 month” event_end_before=”last day of -1 month”]

◆eo_eventsの使い方
[eo_events numberposts=5]  イベントを5件表示
[eo_events event_start_before=”引数”] 引数より前の開始イベントを表示 (過去)
[eo_events event_start_after=”引数”] 引数より後の開始イベントを表示(未来)
[eo_events event_end_before=”引数”] 引数より前の終了イベントを表示 (過去)
[eo_events event_end_after=”引数”] 引数より後の終了イベントを表示(未来)
[eo_events ondate=””] 特定日に開始するイベントを表示 

◆引き数
tomorrow
today
now
+1 week
+2 week
+1 month
third Thursday of this month
last Monday
first day of this month
last day of this month

◆PHP 変数のデータの型を調べる

◆イベントカテゴリーページの 昇順と降順
event-organiser-archives.php
538行

ASC⇒DESC

ORDER BY 列名 ASC  指定した項目を昇順でソートする
ORDER BY 列名 DESC 指定した項目を降順でソートする

昇順: JISコード順に従って並べ替える
数値:1→9
アルファベット:A→Z
かな:あ→ん
日付:古い順

降順: JISコードの逆順に並べ替える
数値:9→1
アルファベット:Z→A
かな:ん→あ
日付:新しい順

これがやりたかった。WPでアイキャッチがなかったら一枚目の画像を表示

http://appofit.com/wordpress/template-wp/postimg-wp/

APPOFIT > WordPress > WordPressテンプレートカスタマイズ > 記事に含まれる1枚目の画像を抽出する

私の古いサイトには、初期の頃の投稿記事にはアイキャッチが全くなくて、でもほぼ写真は記事内にあるので一覧や検索結果に
「アイキャッチがあったら、アイキャッチを表示、
アイキャッチがなかったら投稿の中の1枚目画像を表示、
それもなかったら画像なしのno-image.pngか何かを表示させる」
というのがやりたくて、こちらのサイトを見てできた!

ふぅ、素晴らしいな。

function getPostImage($mypost, $size = 'MEDIUM'){
	if(empty($mypost)){ return(null); }
	
	if(has_post_thumbnail($mypost->ID)){
		// アイキャッチ画像を設定済みの場合
		$file_id = get_post_thumbnail_id($mypost->ID);
	}else{
		// アイキャッチが設定されていない場合
		$files = get_children(array('post_parent' => $mypost->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image'));
		if(is_array($files) && count($files) != 0){
			$files = array_reverse($files);
			$file  = array_shift($files);
			if(is_object($file) && isset($file->ID)) $file_id = $file->ID;
		}
	}
	
	if(isset($file_id) && !empty($file_id)){
		// アイキャッチまたは添付されているファイルIDが取得できている場合(altは記事タイトルを使う)
		if(!empty($size)) $res_temp = wp_get_attachment_image_src($file_id, $size);
			else $res_temp = wp_get_attachment_image_src($file_id);
		
		if(is_array($res_temp)){
			$resultArray = array(
				"url"    => $res_temp[0],
				"alt"    => $mypost->post_title
			);
		}
	}
	
	if(!isset($resultArray) || empty($resultArray)){
		// ここまでで画像が取得できていない場合は、記事本文中からimgタグを拾う
		if(preg_match('/<img([ ]+)([^>]*)src=["|']([^"|^']+)["|']([^>]*)>/',$mypost->post_content,$img_array)){
			$resultArray["url"] = $img_array[3];

			// ALTを取得
			preg_match('/alt=["|']([^"|^']+)["|']/',$img_array[0],$alt_array);
			if(!empty($alt_array)) $resultArray["alt"] = $alt_array[1];
				else $resultArray["alt"] = $mypost->post_title;
		}
	}
	
	// ここまで来ても取得できていなければnullを返す
	if(!isset($resultArray)) $resultArray = null;
	
	return($resultArray);
}

次の記事 前の記事 メモ

次の記事 前の記事 メモ

<?php if (get_next_post() or get_previous_post() ){ ?>
    <div class="navigation">
    <span class="previous-entries"><?php previous_post_link(' %link') ?></span>
    <span class="next-entries"><?php next_post_link('%link') ?></span>
    </div>
    <?php } ?>

    /*navigation 記事下の前後ページリンク
/*
/***************************************************************/
.navigation{
  background-color:#f0f8ff;
  padding: 8px;
  webkit-border-radius:8px 8px 8px 8px;
  -moz-border-radius:8px 8px 8px 8px;
  border-radius:8px 8px 8px 8px;
  margin-bottom:2em;
  margin-top:3em;
}

.previous-entries{
  padding-right:15px;
  border-right:2px solid #e6e6fa;
}
.next-entries{
  padding-left:10px;
}
Duplicator を使って 本番環境のコピーをローカル(ISWP)に作る

Duplicator を使って 本番環境のコピーをローカル(ISWP)に作る

お客様で運用開始してしばらくして、wordpressの修正が必要になったので最新のコピーをローカルに作りました。
楽しようとしてプラグインのDuplicatorを使いたいのに、ISWPのローカルで実行すると接続できないと出て進めなくなった。
簡単なことで実行できるようになったのだけど、忘れてしまうので書いておこう。

1、本番(さくらサーバー)にプラグインの「Duplicator」をインストール 有効化してパッケージを作ってそいつを開発用USBメモリの中のwordpressのルートに静かに入れる。
文字列.zipとinstaller.phpの二つ。

2、ISWPを起動して、http://127.0.0.1:4001/wordpress/installer.php にアクセス。
ホスト localhost
名前 wordpress
ユーザ root
パスワード 空

Server=localhost; Database=wordpress1; Uid=root; Pwd=; Port=3306
インスタントワードプレスだと、接続テストのところでこける
ポート3306のどうのこうのと出る。

その時はpms_config.iniをなおす必要がある。
ドライブ名:InstantWP_4.3iwpserverpms_config.ini
MySQLPort=7188 ところを、 MySQLPort=3306 に変更する

変えたら、INSTANT WORDPRESSを一度閉じて再起動しないと反映されない。
これでできているはず。
これでローカル<-->本番 の行ったり来たりが楽にできるようなりました。

アップできない拡張子のファイルをWordPressでアップできるようにする

アップできない拡張子のファイルをWordPressでアップできるようにする

お客さんが「イラストレータの元ファイルをとっておきたいから 
.ai のファイルをWPのメディアにアップしようとしたらエラーが出た!
ホームページ壊れてるよ!!」っていうので対応しました。

ふつーにWordpressに.aiのファイルをアップしようとしたら
「このファイルタイプはセキュリティの観点から許可されていません。」
ってエラーが出ます。
たぶん.exe とかも出ると思うけど。

そんな時はテーマフォルダのfunctions.phpに許可しますって書けばOK
function my_ext2type($y_ext2type) {
array_push($y_ext2type, array('image' => 'ai');
array_push($y_ext2type, array('image' => 'psd'));
return $y_ext2type;
}
add_filter('ext2type', 'my_ext2type');


function custom_mime_types( $mimes ) {
    $mimes['ai'] = 'image/ai';
    $mimes['psd'] = 'image/psd';
    return $mimes;
}
add_filter( 'upload_mimes', 'custom_mime_types' );

念のため許可されているものをはじくようにしたい場合は

function custom_mime_types( $mimes ){
    unset( $mimes['jpg'] );
        unset( $mimes['gif'] );
    return $mimes;
}
add_filter( 'upload_mimes', 'custom_mime_types' );

もしこうしたら .jpg と .gif で
「このファイルタイプはセキュリティの観点から許可されていません。」が出るわけ。

終わって連絡したら
「なんだ壊れてなかったのかぁ♡」と喜んでもらえてよかったです。
WordPressからTwitterの連携はNextScripts: Social Networks Auto-Posterが良い

WordPressからTwitterの連携はNextScripts: Social Networks Auto-Posterが良い

wordpressに投稿したら自動でtwitterにも投稿したく、WP to Twitter と WordPress Popular Posts を試してみたんだけど、
今回使ってみたNextScripts: Social Networks Auto-Posterを使ってみたらとても良かった。

記事内の画像がツイートに埋め込んだ(表示されてる)状態でポスとされるから!
しかも設定もとくに変える箇所がなく、英語だけどなんとなくで進んでいけた。

wordpressのデフォルトの画像回り込みのCSS

wordpressのデフォルトの画像回り込みのCSS
自作のテーマなどの時に忘れてしまいがちなのでメモ

[CSS]
img.centered {
display: block;
margin-left: auto;
margin-right: auto;
}

img.alignright {
padding: 4px;
margin: 0 0 2px 7px;
display: inline;
}

img.alignleft {
padding: 4px;
margin: 0 7px 2px 0;
display: inline;
}

.alignright {
float: right;
}

.alignleft {
float: le
[/CSS]

wordpressで挿入画像のサイズ選択肢を増やしたい

wordpressで挿入画像のサイズ選択肢を増やしたい

/*************イメージサイズの追加*************/
function add_custom_image_size_select( $size_names ) {
    global $my_custom_image_sizes;
    $custom_sizes = get_intermediate_image_sizes();
    foreach ( $custom_sizes as $custom_size ) {
        if ( isset( $my_custom_image_sizes[$custom_size]['selectable'] ) && $my_custom_image_sizes[$custom_size]['selectable'] ) {
            $size_names[$custom_size] = $my_custom_image_sizes[$custom_size]['name'];
        }
    }
    return $size_names;
}
add_filter( 'image_size_names_choose', 'add_custom_image_size_select' );

function add_custom_image_sizes() {
    global $my_custom_image_sizes;
    $my_custom_image_sizes = array(
        'size-A' => array(
            'name'       => 'カスタムサイズ-幅300高さ200', // 「メディアを挿入」での名称
            'width'      => 300,    // 画像の最大幅
            'height'     => 200,    // 画像の最大高
            'crop'       => false,  // 切り抜き
            'selectable' => true   // 「メディアを挿入」での選択可否
        ),
        'size-B' => array(
            'name'       => 'カスタムサイズ-幅430高さ280',
            'width'      => 430,
            'height'     => 280,
            'crop'       => false,
            'selectable' => true
        ),
        'size-C' => array(
            'name'       => 'カスタムサイズ-幅550高さ370',
            'width'      => 550,
            'height'     => 370,
            'crop'       => false,
            'selectable' => true
        ),
    );
    foreach ( $my_custom_image_sizes as $slug => $size ) {
        add_image_size( $slug, $size['width'], $size['height'], $size['crop'] );
    }
}
add_action( 'after_setup_theme', 'add_custom_image_sizes' );

size-custom

SI CAPTCHA Anti-Spamが急にUnreadable CAPTCHA token fileってエラー

SI CAPTCHA Anti-Spamが急にUnreadable CAPTCHA token fileってエラー

このブログに入れている SI CAPTCHA Anti-Spam というプラグインがへんになった。 おとといまでふつーにログインできていたのに、昨日はじかれて。で、昨日は忙しくなってしまったので再度今日ログインを試すと 「Unreadable CAPTCHA token file」とでてログインできない。

ログインIDもパスワードも変えていない。試しにiphoneのブログ投稿アプリから投稿したらできた。 やっぱりIDもパスも変わっていないなぁ。

これはキャプチャがおかしいと思って、FTPでpluginフォルダに入って、si-captcha-for-wordpress を 適当にリネームした。 それで再度ログインしてみたらできた。 やっぱりキャプチャがへんみたい。

それでUnreadable CAPTCHA token fileをググったら解決方法があった

スパム対策

wp-content/plugins/si-capcha-for-wordpress/captchaの下にある、cache のパーミッションを777に変更すると治るらしい。

でも結局自分の場合はこれでは治らなかった。

ダメになった原因はおそらく2~3日前にプラグインを入れたからだ。

入れたのは管理画面のアクセスを確認できるプラグイン「Crazy Bone」と
ログイン試行回数を制限する「Limit Login Attempts」だった。
他に「PS Disable Auto Formatting」も入れたけどこれは関係なさそう。

「Crazy Bone」と「Limit Login Attempts」が怪しい。
ログイン試行回数を制限するLimit Login Attemptsでログイン試行回数を短く設定しておくことでキャプチャは諦めることで納得した。

mmm…

wordpress 自作のテーマを作る 2014/09/ その5

functions.php


<?php
// ウィジェットエリア
// サイドバーのウィジェット
register_sidebar( array(
'name' => __( 'Side Widget' ),
'id' => 'side-widget',
'before_widget' => '<li class="widget-container">',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );

// フッターエリアのウィジェット
register_sidebar( array(
'name' => __( 'Footer Widget' ),
'id' => 'footer-widget',
'before_widget' => '<div class="widget-area"><ul><li class="widget-container">',
'after_widget' => '</li></ul></div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );

// アイキャッチ画像
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size(220, 165, true ); // 幅 220px、高さ 165px、切り抜きモード


// カスタムナビゲーションメニュー
add_theme_support('menus');

/* ------------チェック---------------- */
/* ★ ---------必須ではないがやっておくとよい---------★ */

//<head>内のWordPressのバージョンを消す
remove_action('wp_head','wp_generator');

/*-- カスタム投稿ページ--------------------------------------------------------------------------*/
/* menu_position5は「投稿」の下、10は「メディア」の下、20は「固定ページ」の下です。
/*--------------カスタムメニュー--------------*/

/* ★infoここらから★ */
$labels = array(
'name' => _x( 'お知らせ', 'info' ),
'singular_name' => _x( 'お知らせ', 'info' ),
'add_new' => _x( '新規作成', 'info' ),
'add_new_item' => _x( '新しく追加 - お知らせ', 'info' ),
'edit_item' => _x( '編集 - お知らせ', 'info' ),
'new_item' => _x( '新規追加 - お知らせ', 'info' ),
'view_item' => _x( '表示 - お知らせ', 'info' ),
'search_items' => _x( '検索 - お知らせ', 'info' ),
'not_found' => _x( 'ページが見つかりません', 'info' ),
'not_found_in_trash' => _x( 'ゴミ箱にはありません', 'info' ),
'parent_item_colon' => _x( '新しいお知らせ:', 'info' ),
'menu_name' => _x( 'お知らせ', 'info' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'supports' => array( 'title', 'editor' ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 10,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post'
);
register_post_type('info', $args );

/* カスタムタクソノミーを定義 */
register_taxonomy(
'info_cat',
'info',
array(
'label' => 'カテゴリー',
'hierarchical' => true,
'rewrite' => array('slug' => 'info')
)
);
/* カスタムタクソノミーを定義ここまで */

/* 管理画面一覧にカテゴリを表示 */
function manage_info_columns($columns) {
$columns['info_category'] = "カテゴリー";
return $columns;
}
function add_info_column($column_name, $post_id){
if( $column_name == 'info_category' ) {
//カテゴリー名取得
if( 'info_category' == $column_name ) {
$info_category = get_the_term_list($post_id, 'info_cat', '', ', ', '' );
}
//該当カテゴリーがない場合「なし」を表示
if ( isset($info_category) && $info_category ) {
echo $info_category;
} else {
echo __('None');
}
}
}
add_filter('manage_edit-info_columns', 'manage_info_columns');
add_action('manage_posts_custom_column', 'add_info_column', 10, 2);
/* 管理画面一覧にカテゴリを表示ここまで */

/* ★infoここまで★ */
/* ★menuここらから★ */
$labels = array(
'name' => _x( 'メニュー', 'menu' ),
'singular_name' => _x( 'メニュー', 'menu' ),
'add_new' => _x( '新規作成', 'menu' ),
'add_new_item' => _x( '新しく追加 - メニュー', 'menu' ),
'edit_item' => _x( '編集 - メニュー', 'menu' ),
'new_item' => _x( '新規追加 - メニュー', 'menu' ),
'view_item' => _x( '表示 - メニュー', 'menu' ),
'search_items' => _x( '検索 - メニュー', 'menu' ),
'not_found' => _x( 'ページが見つかりません', 'menu' ),
'not_found_in_trash' => _x( 'ゴミ箱にはありません', 'menu' ),
'parent_item_colon' => _x( '新しいメニュー:', 'menu' ),
'menu_name' => _x( 'メニュー', 'menu' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'supports' => array( 'title', 'editor' ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 10,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post'
);
register_post_type('menu', $args );

/* カスタムタクソノミーを定義 */
register_taxonomy(
'menu_cat',
'menu',
array(
'label' => 'カテゴリー',
'hierarchical' => true,
'rewrite' => array('slug' => 'menu')
)
);
/* カスタムタクソノミーを定義ここまで */

/* 管理画面一覧にカテゴリを表示 */
function manage_menu_columns($columns) {
$columns['menu_category'] = "カテゴリー";
return $columns;
}
function add_menu_column($column_name, $post_id){
if( $column_name == 'menu_category' ) {
//カテゴリー名取得
if( 'menu_category' == $column_name ) {
$menu_category = get_the_term_list($post_id, 'menu_cat', '', ', ', '' );
}
//該当カテゴリーがない場合「なし」を表示
if ( isset($menu_category) && $menu_category ) {
echo $menu_category;
} else {
echo __('None');
}
}
}
add_filter('manage_edit-menu_columns', 'manage_menu_columns');
add_action('manage_posts_custom_column', 'add_menu_column', 10, 2);
/* 管理画面一覧にカテゴリを表示ここまで */

/* ★menuここまで★ */
/* ★specialここらから★ */
$labels = array(
'name' => _x( 'スペシャル', 'special' ),
'singular_name' => _x( 'スペシャル', 'special' ),
'add_new' => _x( '新規作成', 'special' ),
'add_new_item' => _x( '新しく追加 - スペシャル', 'special' ),
'edit_item' => _x( '編集 - スペシャル', 'special' ),
'new_item' => _x( '新規追加 - スペシャル', 'special' ),
'view_item' => _x( '表示 - スペシャル', 'special' ),
'search_items' => _x( '検索 - スペシャル', 'special' ),
'not_found' => _x( 'ページが見つかりません', 'special' ),
'not_found_in_trash' => _x( 'ゴミ箱にはありません', 'special' ),
'parent_item_colon' => _x( '新しいスペシャル:', 'special' ),
'special_name' => _x( 'スペシャル', 'special' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'supports' => array( 'title', 'editor' ),
'public' => true,
'show_ui' => true,
'show_in_special' => true,
'special_position' => 10,
'show_in_nav_specials' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post'
);
register_post_type('special', $args );

/* カスタムタクソノミーを定義 */
register_taxonomy(
'special_cat',
'special',
array(
'label' => 'カテゴリー',
'hierarchical' => true,
'rewrite' => array('slug' => 'special')
)
);
/* カスタムタクソノミーを定義ここまで */

/* 管理画面一覧にカテゴリを表示 */
function manage_special_columns($columns) {
$columns['special_category'] = "カテゴリー";
return $columns;
}
function add_special_column($column_name, $post_id){
if( $column_name == 'special_category' ) {
//カテゴリー名取得
if( 'special_category' == $column_name ) {
$special_category = get_the_term_list($post_id, 'special_cat', '', ', ', '' );
}
//該当カテゴリーがない場合「なし」を表示
if ( isset($special_category) && $special_category ) {
echo $special_category;
} else {
echo __('None');
}
}
}
add_filter('manage_edit-special_columns', 'manage_special_columns');
add_action('manage_posts_custom_column', 'add_special_column', 10, 2);
/* 管理画面一覧にカテゴリを表示ここまで */

/* ★specialここまで★ */

/* ★blogここらから★ */
$labels = array(
'name' => _x( 'ブログ', 'blog' ),
'singular_name' => _x( 'ブログ', 'blog' ),
'add_new' => _x( '新規作成', 'blog' ),
'add_new_item' => _x( '新しく追加 - ブログ', 'blog' ),
'edit_item' => _x( '編集 - ブログ', 'blog' ),
'new_item' => _x( '新規追加 - ブログ', 'blog' ),
'view_item' => _x( '表示 - ブログ', 'blog' ),
'search_items' => _x( '検索 - ブログ', 'blog' ),
'not_found' => _x( 'ページが見つかりません', 'blog' ),
'not_found_in_trash' => _x( 'ゴミ箱にはありません', 'blog' ),
'parent_item_colon' => _x( '新しいブログ:', 'blog' ),
'blog_name' => _x( 'ブログ', 'blog' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'supports' => array( 'title', 'editor' ),
'public' => true,
'show_ui' => true,
'show_in_blog' => true,
'blog_position' => 10,
'show_in_nav_blogs' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post'
);
register_post_type('blog', $args );

/* カスタムタクソノミーを定義 */
register_taxonomy(
'blog_cat',
'blog',
array(
'label' => 'カテゴリー',
'hierarchical' => true,
'rewrite' => array('slug' => 'blog')
)
);
/* カスタムタクソノミーを定義ここまで */

/* 管理画面一覧にカテゴリを表示 */
function manage_blog_columns($columns) {
$columns['blog_category'] = "カテゴリー";
return $columns;
}
function add_blog_column($column_name, $post_id){
if( $column_name == 'blog_category' ) {
//カテゴリー名取得
if( 'blog_category' == $column_name ) {
$blog_category = get_the_term_list($post_id, 'blog_cat', '', ', ', '' );
}
//該当カテゴリーがない場合「なし」を表示
if ( isset($blog_category) && $blog_category ) {
echo $blog_category;
} else {
echo __('None');
}
}
}
add_filter('manage_edit-blog_columns', 'manage_blog_columns');
add_action('manage_posts_custom_column', 'add_blog_column', 10, 2);
/* 管理画面一覧にカテゴリを表示ここまで */

/* ★blogここまで★ */
/* post_id.htmlにRewrite 複数アドレスを置き換えたい場合 参考: http://webpaprika.com/387.html まとめて記載*/
/*---- ここから ----*/
add_action('init', 'myposttype_rewrite');
function myposttype_rewrite() {
global $wp_rewrite;

/*お知らせ*/
$queryarg = 'post_type=info&p=';
$wp_rewrite->add_rewrite_tag('%info_id%', '([^/]+)',$queryarg);
$wp_rewrite->add_permastruct('info', '/info/%info_id%.html', false);

/*メニュー*/
$queryarg = 'post_type=menu&p=';
$wp_rewrite->add_rewrite_tag('%menu_id%', '([^/]+)',$queryarg);
$wp_rewrite->add_permastruct('menu', '/menu/%menu_id%.html', false);

/*スペシャル*/
$queryarg = 'post_type=special&p=';
$wp_rewrite->add_rewrite_tag('%special_id%', '([^/]+)',$queryarg);
$wp_rewrite->add_permastruct('special', '/special/%special_id%.html', false);

/*ブログ*/
$queryarg = 'post_type=blog&p=';
$wp_rewrite->add_rewrite_tag('%blog_id%', '([^/]+)',$queryarg);
$wp_rewrite->add_permastruct('blog', '/blog/%blog_id%.html', false);
}

add_filter('post_type_link', 'myposttype_permalink', 1, 3);
function myposttype_permalink($post_link, $id = 0, $leavename) {
global $wp_rewrite;
$post = &get_post($id);
if ( is_wp_error( $post ) )
return $post;
$newlink = $wp_rewrite->get_extra_permastruct($post->post_type);
$newlink = str_replace('%'.$post->post_type.'_id%', $post->ID, $newlink);
$newlink = home_url(user_trailingslashit($newlink));
return $newlink;
}
/*----ここまで----*/

/*-- カスタム投稿ページ------------------------------------------------------------------------ここまで --*/

/*特定のカスタム投稿タイプのみアーカイブでの表示件数を変える*/
add_action('pre_get_posts', 'my_pre_get_posts');
function my_pre_get_posts($query) {
if (!is_admin() && $query->is_main_query() && is_post_type_archive('info')) {
$query->set('posts_per_page', 10);
}
}

/*-- 管理画面用のスタイルシート★ 見出し・テキストエリアフォントをフロントと揃える… *--**--*--**--*--**--*--**--*--**--*--**--*--**--*--**--*--**--*--**--*--**--*--**--*--**--*--*/

add_editor_style('css/editor-style.css');

/* サーチ*/
function my_search_form( $form ) {

$form = '<form role="search" method="get" id="searchform" action="'.home_url( '/' ).'" >
<div>
<input type="text" value="' . get_search_query() . '" name="s" id="s" />
<input type="submit" id="searchsubmit" class="btn" value="'. esc_attr__('Search') .'" />
</div>
</form>';

return $form;
}

add_filter( 'get_search_form', 'my_search_form' );

?>

パーマリンクに下記を設定 functions.php を変えたら必ず空でもパーマリンクの更新をする事を忘れない!!★
/%category%/%post_id%.html

css/editor-style.css はあとで作る。(管理画面での入力時になるべくフロントとそろえないとお客さんパニックになる場合があるため☆)
絶対更新パーマリンク☆