WordPress の「カスタム投稿タイプ」を実装しようとしたけど、何やら問題が発生してしまった!


【追記】
「かちびと.net」さんのところで御紹介頂いた「カスタム投稿タイプ」を利用するための「Custom Post Type UI」というプラグインを利用してどこまでできるのかをネットでいろいろと調べていましたが、どうやら以下の投稿記事が本ブログで実現したいことを最も詳細に説明してくれているようです。

プラグインの利用に変更しようかな・・・

【公開時、投稿記事】
昨日、テニスに関する投稿記事と WordPress 関連の投稿記事を分類したいということを公開しました!(投稿記事「WordPress の「カスタム投稿タイプ」を利用して、テニスブログから WordPress 関連の記事を分割する?」参照)

ネットで検索して「かちびと. net::WordPressのカスタム投稿タイプとカスタムタクソノミーを使って新たに別のコンテンツを作ったので、制作プロセスを書きました」に出会って、これで実現できると確信を持ちました。

まずは、上記の投稿記事にあるコードを利用して「カスタム投稿タイプ」の下地を作成・・・本サイトでは、function.php を書き換えるのが嫌だったので以下のようなプラグンにしました。だったら、既に市場にあるプラグインで良いじゃん、と思われるかもしれませんが、市場に登場しているプラグインは自分好みに変更するのが大変なので、まずは上記のようにコードを自分で書いてみたいというのが理由なのですが。

<?php
/*
Plugin Name: AAA-ZeroCustomPost
Plugin URI: http://kachibito.net/wordpress/building-new-contents.html
Description: 「俺流!テニス論 2.0」内にカスタム投稿タイプを設置する
Version: 1.0
Author: Zero Cool
Author URI: http://www.attack100.net/
*/

add_action('init', 'my_snippet_init');
function my_snippet_init()
{
  $labels = array(
    'name' => _x('WP関連投稿記事', 'post type general name'),
    'singular_name' => _x('WP関連記事一覧', 'post type singular name'),
    'add_new' => _x('新しくWPの記事を書く', 'snippets'),
    'add_new_item' => __('WPの記事を書く'),
    'edit_item' => __('WPの記事を編集'),
    'new_item' => __('新しい記事'),
    'view_item' => __('記事を見てみる'),
    'search_items' => __('記事を探す'),
    'not_found' =>  __('記事はありません'),
    'not_found_in_trash' => __('ゴミ箱に記事はありません'),
    'parent_item_colon' => ''
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => 5,
    'supports' => array('title','editor','thumbnail','custom-fields','excerpt','revisions','page-attributes'),
    'has_archive' => true
  );
  register_post_type('snippets',$args);
}

//投稿時のメッセージ
add_filter('post_updated_messages', 'snippets_updated_messages');
function snippets_updated_messages( $messages ) {

  $messages['snippets'] = array(
    0 => '',
    1 => sprintf( __('記事を更新しました <a href="%s">記事を見る</a>'), esc_url( get_permalink($post_ID) ) ),
    2 => __('カスタムフィールドを更新しました'),
    3 => __('カスタムフィールドを削除しました'),
    4 => __('記事更新'),
    5 => isset($_GET['revision']) ? sprintf( __(' %s 前に保存しました'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('記事が公開されました <a href="%s">記事を見る</a>'), esc_url( get_permalink($post_ID) ) ),
    7 => __('記事を保存'),
    8 => sprintf( __('記事を送信 <a target="_blank" href="%s">プレビュー</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('記事を予約投稿しました: <strong>%1$s</strong>. <a target="_blank" href="%2$s">プレビュー</a>'),
      date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('記事の下書きを更新しました <a target="_blank" href="%s">プレビュー</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );
  return $messages;
}
?>

ほぼ完璧と考えていたのですが・・・以下のエラーメッセージが出て機能しない・・・

error/warning/notice:
array ( ‘type’ => 2048, ‘message’ => ‘Non-static method KtaiServices::get() should not be called statically,
assuming $this from incompatible context’, ‘file’ => ‘…../plugins/ktai-style/ktai_style.php’, ‘line’ => 117, ) | length: 3

何が何だか理解できず!そこで恥を忍んで「かちびと.net」さんへ質問してみました。丁寧な回答と可能性のある原因を説明して頂きました!素晴らしいですね・・・見ず知らずの私のような素人に・・・感謝感激です。

で、調べてみたのですが、どうやら、PHP のバージョン問題でもなさそうだし・・・そこで、「かちとび.net」で説明頂いたように、プラグインを一つ一つ調べようと決心して・・・

上記のエラーメッセージにある「Ktai-Style」のプラグインをまずは無効化。すると今度は、同じようなメッセージで「AddQuicktag」でなにやら起きている・・・そこでこれも無効化。すると・・・問題無く機能しだしました!

つまり、上記の方法で「カスタム投稿タイプ」を運用するためには、少なくとも「Ktai-Style」と「AddQuicktag」のプラグインを無効化する必要がありそうです。「Ktai-Style」は今や WordPress に標準で装備されているようですから削除するとしても、「AddQuicktag」はかなり重宝しているので可能であれば有効化しておきたい!

ちなみに、「カスタム投稿タイプ」を実装するために「SEOテンプレート比較:Custom Post Type UIの使い方::カスタム投稿タイプの導入方法 – WordPressのプラグイン」という投稿記事の御紹介を頂きました。このプラグインを利用すると何も問題なく機能するようです。即ち・・・「Custom Post Type UI」を利用して「カスタム投稿タイプ」を有効化し、更に「AddQuicktag」も問題なし・・・

う~ん・・・どうなってんだ~もうちょっと研究してみます!

合わせて読みたいかも・・・


Twitter でコメントを・・・

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *