Movable TypeのDataAPIで記事を投稿するサンプル

September 8,2021 11:55 PM
Category:[DataAPI]
Tag:[DataAPI, MovableType]
Permalink

DataAPIで記事を投稿するサンプルを紹介します。

1.はじめに

ネットにDataAPIで記事を投稿するサンプルがないのと、サンプルがあってもログイン・ログアウトといった処理が盛り込まれていて、コードが複雑になって理解が難しいので、シンプルなものを自作してみました。

2.サンプル

下記にサンプル(ほぼほぼそのまま利用可能)を示します。ご利用前に3項と4項には必ず目を通してください。

また、コードにコメントを記載しているので、解説は省略します。

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="<$mt:StaticWebPath$>data-api/v4/js/mt-data-api.min.js"></script>
<script type="text/javascript">
function post() {
 
    // DataAPIオブジェクト生成
    var api = new MT.DataAPI({
        baseUrl: '<$mt:CGIPath$>mt-data-api.cgi',
        clientId: 'post-entry',
        sessionPath: '/',
    });
 
    // ユーザー情報
    var credential = {
        username: "ユーザー名",
        password: "パスワード",
        remember: true
    };
 
    // 認証
    api.authenticate(credential, function(response) {
        if (!response.error) {
 
            // 記事データ
            var entry = {};
            entry['title']  = $('#title').val();
            entry['body']   = $('#text_body').val();
            entry['status'] = 'Publish';
 
            // 記事投稿
            api.createEntry(<$mt:BlogID$>, entry, function(response) {
                if (response.error) {
                    alert("Error:" + response.error.code + ':' + response.error.message);
                    return;
                }
                alert("Success:" + response.title);
            });
        }
    });
}
</script>
 
<div id="entry-post">
    <form name="CreateEntry" id="CreateEntry" method="post">
        <p><input type="text" name="title" id="title" placeholder="タイトル"></p>
        <p><textarea name="text_body" id="text_body" placeholder="本文"></textarea></p>
        <p><input type="submit" onclick="post(); return false;" value="投稿"></p>
    </form>
</div>

3.使い方

上記のコードをインデックステンプレートにペーストして、下記の赤色部分について、任意のユーザー・パスワードに書き換えてください。

    // ユーザー情報
    var credential = {
        username: "ユーザー名",
        password: "パスワード",
        remember: true
    };

テンプレートを再構築してページにアクセスすればフォームが表示されるので、タイトルと本文を入力して「投稿」をクリックすれば投稿できます。

投稿結果はJavaScriptのalertで表示します。

4.注意事項

パスワードは、ウェブサービスのパスワードを設定してください。ユーザー編集画面の「Webサービスパスワード」が該当します。

また、DataAPIを有効にするには、サイトの「設定」→「Webサービス」→「Data API」を有効にしてください。無効のまま投稿すると403エラーが発生します。

ただいシステム管理者はこの設定と無関係に投稿できるようです。

Comments [0] | Trackbacks [0]

WordPressの記事データをCSV形式でエクスポート・インポートできる「wp-csv-data-imexporterプラグイン」

September 1,2021 11:55 PM
Category:[自作プラグイン]
Tag:[Plugin, WordPress, wp-csv-data-imexporter]
Permalink

WordPressの記事データをCSV形式でエクスポート・インポートできる「wp-csv-data-imexporterプラグイン」を公開します。

1.主な機能

CSV形式で記事・固定ページ・カスタム投稿タイプのエクスポートおよびインポートが可能です。

インポートでは記事・固定ページ・カスタム投稿タイプの新規作成、あるいはID指定による上書きが可能です。

CSVデータは、カテゴリ・カスタムタクソノミー・カスタムフィールドにも対応しています。

カスタムフィールドはAdvanced Custom Fields/Smart Custom Fields/Custom Field Suiteのフィールドに対応しています。

2.CSVデータのエクスポート

左メニューの「ツール」→「CSVのエクスポート」をクリック。

CSVのエクスポート

エクスポート画面が表示されるので、投稿タイプ・CSVファイルの文字コード・ステータ等を選択して「エクスポート」をクリック。カスタム投稿タイプを利用している場合は「投稿タイプ」に表示します。

(クリックで拡大)
エクスポート画面

3.CSVデータのインポート

左メニューの「ツール」→「インポート」をクリック。

インポート

「インポーターの実行」をクリック。

インポート

アップロードファイルを選択し、「ファイルをアップロードしてインポート」をクリック。

(クリックで拡大)
エクスポート画面

これでインポートが実行されます。インポート状況は枠内に表示されます。

(クリックで拡大)
エクスポート画面

4.wp-csv-data-imexporterプラグインについて

wp-csv-data-imexporterプラグインの詳細は、下記のリンク先をご確認ください。

wp-csv-data-imexporterプラグイン
wp-csv-data-imexporterプラグイン

Comments [0] | Trackbacks [0]

Movable Typeのコンテンツデータで公開日を比較する方法

August 30,2021 11:55 PM
Category:[テンプレート]
Tag:[]
Permalink

Movable Typeのコンテンツデータで公開日を比較する方法を紹介します。

1.はじめに

この記事で紹介するテンプレートは次のとおりです。

コンテンツデータの公開日(年月日)と再構築日(年月日)を比較し、

  • 公開日より再構築日の方が古い場合:「この記事は未来のものです」を表示
  • 公開日より再構築日の方が古い場合:「この記事は過去のものです」を表示
  • 公開日と再構築日が同じ場合:「この記事は現在のものです」を表示

をそれぞれ出力します。

2.テンプレート

コンテンツデータ公開日のタイムスタンプを比較するテンプレートは下記になります。

<$mt:ContentDate format="%Y%m%d" setvar="content_date"$>
<$mt:Date format="%Y%m%d" setvar="publish_date"$>
 
<mt:If name="content_date" gt="$publish_date">
この記事は未来のものです
<mt:ElseIf name="content_date" lt="$publish_date">
この記事は過去のものです
<mt:Else eq="Date">
この記事は現在のものです
</mt:If>

このテンプレートはコンテンツタイプアーカイブに張り付けてください。

3.テンプレートの解説

まず、コンテンツデータの公開日(年月日)を、MTContentDateタグとsetvarモディファイアを使って、変数content_dateに保存します。年月日は数値として比較できるよう、formatモディファイアに"%Y%m%d"を設定し、"20210827"という風にに出力されるようにします。

<$mt:ContentDate format="%Y%m%d" setvar="content_date"$>

次に再構築された年月日を、MTDateタグとsetvarモディファイアを使って、変数publish_dateに保存します。その他は上の設定と同じです。

<$mt:Date format="%Y%m%d" setvar="publish_date"$>

保存した2つの変数を比較します。最初のMTIfタグには次のように設定します。

<mt:If name="content_date" gt="$publish_date">

MTIfタグのnameモディファイアに変数content_date、gtモディファイアに変数publish_dateを設定します。

nameモディファイアに変数を記述するときはそのままでいいですが、gtモディファイアに変数を設定する場合は変数名の前に"$"を付与してください。

これで「変数content_dateの値が変数publish_dateの値より大きいか?」という判定になります。大きい場合はMTIfタグの中の処理を実行し、

この記事は未来のものです

を出力します。

次のMTElseIfタグには次のように設定します。

<mt:ElseIf name="content_date" lt="$publish_date">

MTElseIfタグにはMTIfタグと同じように条件を設定することができます。ltモディファイアにはgtモディファイアと同じように変数の先頭んに"$"を付与します。

これで「変数content_dateの値が変数publish_dateの値より小さいか?」という判定になります。小さい場合はMTIfタグの中の処理を実行し、

この記事は過去のものです

を出力します。

最後のMTElseタグは、上記の2つの判定条件のいずれにもマッチしなかった場合(=2つの変数の値が等しい場合)に実行されます。

<mt:Else eq="Date">

この条件が実行されると、

この記事は現在のものです

を出力します。

4.注意事項

スタティックパブリッシングの場合、MTDateタグの情報を更新させるため、日毎の再構築が必要です。

Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages