1年以上前に更新された記事です。
情報が古い可能性がありますので、注意してください。
情報が古い可能性がありますので、注意してください。
まずは、心臓部分である記事取得クローラーを作るその前に、DBやカスタム投稿タイプを作成する。
DBはクローラーを実行する時の引数にサイトURLやカテゴリをDBから取得出来るように。
カスタム投稿タイプは、WordPress本来の機能を失わせない為に作成する。
テーブル作成
プロトタイプ感が強いのであまり深くは考えてないけど、こんな感じのテーブル構成でいいんじゃないかな。
サイト情報テーブルに、サイト名、サイトURL、サイト説明、サイトスラッグ。
カテゴリ変換テーブルに、サイトID、変換前カテゴリ、変換後カテゴリID。
プラグイン初期化時にテーブルチェックして、テーブルが存在しない場合は作成する。
/** * プラグインの初期化時 */ function createCustomPost() { $sultanInit = new sultanInit(); $sultanInit->createDataBase(); } add_action('init', 'createCustomPost'); class sultanInit { /** * データベースの作成 * テーブルが存在しない場合、作成する。 */ public function createDataBase() { global $wpdb; // サイトテーブル $tblSiteNameCnt = $wpdb->get_var("select count(*) from $this->tblSiteName"); if($tblSiteNameCnt === null) { $wpdb->query("create table $this->tblSiteName ( id int not null primary key, site_name varchar(2048), site_url varchar(2048), description varchar(2048), site_slug varchar(2048))"); } // 変換テーブル $tblConvCateCnt = $wpdb->get_var("select count(*) from $this->tblConvCate"); if($tblConvCateCnt === null) { $wpdb->query("create table $this->tblConvCat ( id int not null primary key, site_id int not null, b_cat varchar(2048), a_cat int)"); } } }
カスタム投稿タイプの作成
取得した記事タイトルやリンクなどを格納するのに使用する。
WordPressの記事として格納する事で、WordPress本来の機能であるアーカイブを使用でき、日別やカテゴリ別に出力しやすくなる。
/** * カスタム投稿タイプ、カスタムタクソノミー登録 */ public function createPostType() { // カスタムタクソノミー作成(記事カテゴリ) register_taxonomy( 'article-category', 'antnPostType', array( 'label' => '記事カテゴリ', 'public' => true, 'show_ui' => true, 'hierarchical' => true ) ); // カスタムタクソノミー作成(サイト名) register_taxonomy( 'site-name', 'antnPostType', array( 'label' => 'サイト名', 'public' => true, 'show_ui' => true, 'hierarchical' => true ) ); // カスタム投稿タイプ作成 register_post_type( 'antnPostType', array( 'labels' => array( 'name' => 'アンテナ', //管理画面などで表示する名前 'singular_name' => 'アンテナ', //管理画面などで表示する名前(単数形) 'menu_name' => 'アンテナ', //管理画面メニューで表示する名前(nameより優先される) 'add_new_item' => '新しいアンテナ', //新規作成ページのタイトルに表示される名前 'add_new' => '新規追加', //メニューの新規追加ボタンのラベル 'new_item' => '一覧ページの「新規追加」ボタンのラベル', 'edit_item' => '編集', //編集ページのタイトルに表示される名前 'view_item' => '編集', //編集ページの「投稿を表示」ボタンのラベル 'search_items' => 'アンテナの検索', //一覧ページの検索ボタンのラベル 'not_found' => '見つかりません。', //一覧ページに投稿が見つからなかったときに表示 'not_found_in_trash' => 'ゴミ箱にはありません。' //ゴミ箱に何も入っていないときに表示 ), 'descriptions' => 'アンテナの概要', //カスタム投稿ページの概要文 'hierarchical' => false, //falseの場合、階層構造なし 'public' => true, //ユーザーが内容を投稿する場合true(通常はtrue) 'has_archive' => true, //アーカイブページを作成するか否かを設定(trueでindexページを作成) 'exclude_from_search' => true, //WPの検索機能から検索した際、検索対象に含めるか否かを設定(※trueの場合は検索対象に含めない) 'taxonomies' => array('article-category', 'site-name'), 'supports' => array(//管理画面から投稿できる項目 'title', //タイトル表示を有効に 'editor', //本文の表示を有効に 'thumbnail' ), ) ); }
記事のカテゴリとは別にサイト名用のカスタムタームを用意。
これで簡単にサイト別に出力できるようになるはず。
コメントを残す