WordPress.com: カテゴリ取得

WordPress.com: カテゴリ取得

WordPress.com: Get Categories

この工程は、WordPress.com のカテゴリを取得します。カテゴリの名前を指定すると、そのカテゴリの ID が保存されます。複数指定する場合、1行につき1つずつ書くようにしてください。カテゴリの名前を指定しない場合、カテゴリ全件が取得され、名前と ID が保存されます。

Basic Configs
工程名
メモ
Auto Step icon
Configs for this Auto Step
conf_Domain
C1: WordPress.com サイトのドメイン *
conf_Names
C2: カテゴリの名前を保持している/保存するデータ項目 *
conf_Ids
C3: カテゴリ ID を保存するデータ項目 *

Notes

  • WordPress.com(Automattic 社の提供する、WordPress サイトをホストするサービス)で使用できる自動工程です

Capture

See Also

Script (click to open)
  • 次のスクリプトが記述されている XML ファイルをダウンロードできます
    • wordpress-category-get.xml (C) Questetra, Inc. (MIT License)
    • Professional のワークフロー基盤では、ファイル内容を改変しオリジナルのアドオン自動工程として活用できます

// This item requires no authentication.

const API_VERSION = 'v1.1';
const MAX_NUMBER = 1000; // 一度のリクエストで取得できる最大件数

const main = () => {
    ////// == 工程コンフィグ・ワークフローデータの参照 / Config & Data Retrieving ==
    const domain = configs.get('conf_Domain');
    const names = retrieveNamesAsList();

    ////// == 演算 / Calculating ==
    let categories = getCategories(domain);
    if (names.length > 0) { // 名前が指定されている場合は、その名前のカテゴリのみに絞る
        categories = names.map(name => {
            const category = categories.find(item => item.name === name);
            if (category === undefined) {
                throw new Error(`Category not found: ${name}`);
            }
            return category;
        });
    }

    ////// == ワークフローデータへの代入 / Data Updating ==
    if (names.length === 0) {
        saveData('conf_Names', categories.map(item => item.name).join('\n'));
    }
    saveData('conf_Ids', categories.map(item => item.ID).join('\n'));
};

/**
  * config に設定された名前の一覧を読み出す
  * @return {Array<String>} ids
  */
const retrieveNamesAsList = () => {
    const dataDef = configs.getObject('conf_Names');
    let dataStr = engine.findData(dataDef);
    if (dataStr === null) {
        return [];
    }
    // 末尾に改行がある場合、削除
    if (dataStr.endsWith('\n')) {
        dataStr = dataStr.slice(0, -1);
    }
    const dataArray = dataStr.split('\n');
    // 残りの配列に空文字が含まれる場合、エラー
    if (dataArray.some(item => item === '')) {
        throw new Error('Empty lines are not allowed for category names.');
    }
    return dataArray;
};

/**
 * カテゴリ一覧を取得する
 * 一度のリクエストで取得しきれなかった場合、エラー
 * @param {String} domain
 * @return {Array<Object>} categories
 */
const getCategories = (domain) => {
    const url = `https://public-api.wordpress.com/rest/${API_VERSION}/sites/${encodeURIComponent(domain)}/categories`;
    const response = httpClient.begin()
        .queryParam('fields', 'ID,name')
        .queryParam('number', MAX_NUMBER.toString())
        .get(url);
    const status = response.getStatusCode();
    const responseStr = response.getResponseAsString();
    if (status !== 200) {
        engine.log(responseStr);
        throw new Error(`Failed to get categories. status: ${status}`);
    }
    const json = JSON.parse(responseStr);
    if (json.found > MAX_NUMBER) {
        throw new Error('Too many categories.');
    }
    return json.categories;
};

/**
 * データ項目への保存
 * @param configName
 * @param data
 */
const saveData = (configName, data) => {
    const def = configs.getObject(configName);
    engine.setData(def, data);
};

    
上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む