2015年3月4日水曜日

WordPressに自作プラグインを作成して記事を自動投稿する

前回、PHPファイルを実行して記事とアイキャッチ画像を更新しましたが、今回はこれをWordPress上に自作プラグインとして作成し、実行したいと思います。

作成したプラグインのファイルは/wordpress/wp-content/pluginsに保存してください。

まず、作成するプラグインのPHPファイルの先頭に以下のコメントを記述します。
/*
Plugin Name: (プラグインの名前)
Plugin URI: (プラグインの説明と更新を示すページの URI)
Description: (プラグインの短い説明)
Version: (プラグインのバージョン番号。例: 1.0)
Author: (プラグイン作者の名前)
Author URI: (プラグイン作者の URI)
License: (ライセンス名の「スラッグ」 例: GPL2)
*/

次に管理メニューを追加します。
 add_action('admin_menu', 'add_pages');
function add_pages() {
    add_menu_page(
        '記事投稿設定', //HTMLタイトルテキスト
        '記事投稿設定', //管理画面のメニュー上での表示名
        'level_8', //このメニューページを閲覧・使用するために最低限必要なユーザーレベルまたはユーザーの種類と権限
        __FILE__, //メニューページのコンテンツを表示するPHPファイル
        'option_page' //メニューページにコンテンツを表示する関数
    );
}
















現れました。
これだけでは有効化しても何もできないので、オプション画面を記述していきます。
ボタンがクリックされたら記事を投稿できるようにしました。
function option_page(){

    //投稿実行ボタン押下で記事を1つ投稿
    if( isset($_POST['post_flag']) ){
        registPostArticle();
    }
    echo << EOD
        

記事投稿設定


EOD; }

あとは前回と同じです。
/******************************************
 * 記事を投稿する
 *******************************************/
function registPostArticle(){

    $_SERVER = array(
            'HTTP_HOST' => 'your_site_domain',
            'REQUEST_URL' => '../'
            );

    require_once( '../wp-load.php');

    //投稿用パラメーター
    $hPostInfo = array(
            'post_title' => 'テストタイトル',
            'post_content' => 'テスト本文',
            'post_status' => 'publish'
            );

    //投稿実行
    $nInsertId = wp_insert_post($hPostInfo);

    if( $nInsertId ){

        registPostThumbnailImages( $nInsertId );

    }else{
        echo( "UPLOAD FILE FAILED \n"  );
    }
}

/*******************************************************************
 * アイキャッチ画像(サムネイル)を投稿記事に紐付けてアップロードする
 ********************************************************************/
function registPostThumbnailImages( $nInsertId ){

    //アイキャッチ画像情報
    $sImageUrl = 'http://food.foto.ne.jp/img/thumb_kd.jpg';
    $sFileName = basename($sImageUrl);
    $sFileType = wp_check_filetype($sFileName, null);

    //画像保存ディレクトリに画像情報を保存する
    $sUploadDir = wp_upload_dir();
    $sData = file_get_contents($sImageUrl);
    $sUploadImageName = $sUploadDir['path'] . "/" . $sFileName;
    $fpc = file_put_contents( $sUploadImageName, $sData );

    //画像を保存できたらメディアライブラリで再生成する
    if( $fpc ){

        //アイキャッチ設定
        $hAttachment = array(
                'post_mime_type' => $sFileType['type'],
                'post_title' => sanitize_file_name($sFileName),
                'post_content' => '',                'post_status' => 'inherit',
                );

        $file = $sUploadDir['path'] . '/' . $sFileName;

        //アイキャッチ画像を挿入
        $nAttachId = wp_insert_attachment( $hAttachment, $file, $nInsertId );
        require_once( ABSPATH . 'wp-admin/includes/image.php');

        //画像添付ファイルのメタデータを作成する
        $hAttachData = wp_generate_attachment_metadata( $nAttachId, $file );

        //画像ファイルを再作成する
        wp_update_attachment_metadata( $nAttachId, $hAttachData );

        //サムネイル生成
        set_post_thumbnail( $nInsertId, $nAttachId );

        echo( "POST COMPLATE \n" );

    }else{
        echo( "POST FAILED \n" );
    }

}














オプション画面が表示されました。
ボタンをクリックして記事を投稿してみます。























わかりにくいですが、投稿に成功しています。


0 件のコメント:

コメントを投稿