WordPressでカスタム投稿タイプを管理画面で任意にソート(オーダー)する

WordPressでカスタム投稿タイプを管理画面で任意にソート(オーダー)する

<?php

is_admin() && add_action( 'pre_get_posts', 'extranet_orderby' );

function extranet_orderby( $query )
{
    // Nothing to do:  
    if( ! $query->is_main_query() || 'people' != $query->get( 'post_type' )  )
        return;
    $orderby = $query->get( 'orderby');
    $query->set( 'orderby',  'data' );
    $query->set( 'order',  'ASC' ); 
}

WordPressでカスタム投稿タイプを一覧表示で並び替え

WordPressでカスタム投稿タイプを一覧表示で並び替え

$query1 = new WP_Query([
    'post_type' => 'people',
    'posts_per_page' => -1,
    'orderby' => 'date',
    'order' => 'ASC',
]);
if ($query1->have_posts()):
while ($query1->have_posts()) :
    $query1->the_post();
?>
    <h2><?php the_title(); ?></h2>
<?php
endwhile;
endif;
?>

WordPressの固定ページでテンプレートのプルダウンが表示されない場合。

WordPressの固定ページでテンプレートのプルダウンが表示されない場合。

いろいろ試すが出ない、よくよく見ると テーマの index.phpが無かった。
中身は無くても配置するだけで出てくれる。

トップページや一覧ページを専用にしていたので、気づかなかった。>< (front-page,archive.php etc)

Alexaの音声合成マークアップ言語(SSML)でMP3が再生されなかった。ときのmp3形式変換方法

Alexaの音声合成マークアップ言語(SSML)でMP3が再生されなかった。ときのmp3形式変換方法

次のように

return handlerInput.responseBuilder
    .speak('ようこそ。なにか質問してくださいねっ。<audio src="https://example.com/bgm.mp3" />')
    .getResponse();

“スキルがリクエストに正しく応答できませんでした”とのこと。
マニュアル読み進めると

  • ビットレート
  • サンプルレート
  • コーデック

など指定がある模様、でffmpegコマンドで変換

% ffmpeg -i bgm.mp3 -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 bgm-converted.mp3

参考URL : 音声合成マークアップ言語(SSML)のリファレンス
https://developer.amazon.com/ja/docs/custom-skills/speech-synthesis-markup-language-ssml-reference.html#amazon-effect

Alexa スキル開発で外部Json定義からIntentHandlerを生成する。

Alexa スキル開発で外部Json定義からIntentHandlerを生成する。

やりたいこと、

  1. WordPressから発話を更新
  2. Lambda関数にJsonを自動デプロイ
  3. Lambda関数ではJsonデータを読み込みそれからIntenteHandlerを生成

今回はの3の部分をメモ。

データのJson

{
    "CheckOutIntent": {
        "speechText":"チェックアウトは11:00です。"
    },
    "WifiIntent": {
        "speechText":"SSIDはn,a,m,u,r,a,です。パスワードは、g,u,e,s,tです。"
    }
}

汎用的にIntenteHandlerを生成する関数類を準備

var isCanIntentName = function(handlerInput,name){
    return handlerInput.requestEnvelope.request.type === 'IntentRequest'
        && handlerInput.requestEnvelope.request.intent.name === name;
};

var simpleResponce = function(handlerInput,speechText,repromptText){
    if(typeof repromptText == 'undefined'){
        return handlerInput.responseBuilder
            .speak(speechText)
            .getResponse();
    }else{
        return handlerInput.responseBuilder
            .speak(speechText)
            .reprompt(repromptText)
            .getResponse();
    }
};

var makeSimpleHnaler = function(intentName,speechText,repromptText){
    return {
        canHandle(handlerInput) {
            return isCanIntentName(handlerInput,intentName);
        },
        handle(handlerInput) {
            return simpleResponce(handlerInput, speechText,repromptText);
        }
    };
};

メイン処理

 //データ読み込み
var data = require('./data.json'); 

//builderにわたすインテントを入れる配列 : 優先の高いLaunchRequestHandler入れておく。
var intents = [
    LaunchRequestHandler
];

//dataをループにしてintentsにpush()する。
_.each(data,(intent,key)=>{
    let i = makeSimpleHnaler(key,intent.speechText);
    intents.push(i);
});

//優先度の低いEnd,SessionEnded,Errorなどのハンドラー追加
intents = [...intents,EndHandler, SessionEndedRequestHandler, ErrorHandler];

//builderにわたす
exports.handler = Alexa.SkillBuilders.standard()
    .addRequestHandlers(...intents)
    .lambda();

AlexaのSkill開発でのaddRequestHandlersに配列を渡す方法

AlexaのSkill開発でのaddRequestHandlersに配列を渡す方法

addRequestHandlers()でなくaddRequestHandler()で代用とかいろいろ考えたのですが、スプレッド演算子で簡単でした。

exports.handler = Alexa.SkillBuilders.standard()
    .addRequestHandlers(...[
        LaunchRequestHandler,
        CheckoutHandler,
        WifiHandler,
        EndHandler,
        ErrorHandler,
        SessionEndedRequestHandler])
    .lambda();

参考 : スプレッド構文
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax

Alexa開発 ASK CLI(Alexa Skill Kit Command Line Interface)が便利

Alexa開発 ASK CLI(Alexa Skill Kit Command Line Interface)が便利

Amazon Echoのスキル開発で、Lambdaを使っているわけですが、awsコマンドでアップロードする際にzipに固めたり面倒だなと思っていたところですが、ASK CLI(Alexa Skill Kit Command Line Interface)をちゃんとみてみたら、Lambdaへのアップロードとかも出来て便利でした。(早く見ときゃ><!

ざっくりというと、functionのディレクトリで以下のコマンド一発ですみます。

$ ask lambda upload -f {ファンクション名}

インストールも簡単

npmでグローバルにインストール

$ npm install -g ask-cli

initコマンドを叩くとブラウザが開いて認証してOK(若干コマンドラインで確認などもあり)

$ ask init

取り急ぎメモがてら。

Alexaで観光ホテル向けのスキル開発

Alexaで観光ホテル向けのスキル開発

いろいろあって観光ホテル向けのスキルを作っています。
いろいろ使えそうなインテントや基本機能をまとめてみました。

CheckOut    アレクサ、チェックアウトの時間を教えて
ConvenienceStore    アレクサ、近くのコンビニを教えて
VendingMachine  アレクサ、自動販売機の場所を教えて
Supermarket アレクサ、近くのスーパーを教えて
LiquorStore アレクサ、近くの酒屋を教えて
SouvenirShop    アレクサ、近くのお土産品店教えて
Cofe    アレクサ、近くのカフェ教えて
Delivery    アレクサ、近くのデリバリーサービスを教えて
Laundry アレクサ、近くのコインランドリー教えて
Walking アレクサ、近くの散歩コースを教えて
Restaurant  アレクサ、近くのレストランを教えて
Izakaya アレクサ、近くの居酒屋を教えて
Sea アレクサ、近くの海を教えて
Spot    アレクサ、近くの観光スポットを教えて
    
機能  
    アレクサ、Youtubeを開いて
    アレクサ、明日の天気を教えて
    アレクサ、〇〇座の運勢は
    アレクサ、ニュースを聴かせて
    アレクサ、ライトつけて(消して)
    アレクサ、ライト10%
    アレクサ、朝6時に起こして
    アレクサ、タイマー30分

でも利便性はもちつつ、スピーカーがフックになってなにか新しい体験を提供したいところです。
近隣の素敵な場所の映像チラ見せや、現地の方とコミュニケーションにつながるような情報とかetc

いろいろ考えるんだけど一番ネックになりそうなのは、利用規約などがAmazonアカウントに紐付いた個人での利用が前提なっている点。

Alexa for Business に期待していたけど、日本語の案内ページだけできて一向に対応する気配がない。

AmazonさんAlexa for Businessをはよ、お願いいたします。

WordPressのカスタム投稿タイプで簡単にページネーションを実装する

WordPressのカスタム投稿タイプで簡単にページネーションを実装する

いろいろ毎回忘れて調べてて小難しい方法しかググれないのでメモします。
「CPTUI」というプラグインを使います。多分10分くらいでできるはず。

0.CPTUI(Custom Post Type UI) プラグインをインストール/有効化

1.CPTUIプラグインで、カスタム投稿タイプ(ここでは result )を追加

追加

追加

2.CPTUIプラグインで、一覧ページを許可

スクロールしていった先に“アーカイブあり” という項目があるので、
2–1Treuにする
2–2スラッグに result と入力 (これがURLになります。(ここでは一覧ページのURLが https://hogehoge.com/result となります。)


3.テーマにテンプレートを追加。

ファイル名は “archive-result.php” ( resultの部分は、カスタム投稿タイプのスラッグに合わせます。)

<?php
if (have_posts()) :
    while (have_posts()) : the_post();
        ?>
        <h2><?php the_title(); ?></h2>
    <?php
    endwhile;
endif;
?>

<?php
echo paginate_links(array(
    'next_text' => 'next',
    'prev_text' => 'prev'
));
?>

いじょうです。

Amazon Echo をPCでWifiセットアップする方法が楽

Amazon Echo をPCでWifiセットアップする方法が楽

モバイルあぷりよりはだいぶ楽です。

1.以下にアクセス
https://alexa.amazon.co.jp/spa/index.html
モバイルアプリのような画面(UI)になります。

2.サイドバーの[設定]を選んで該当のEchoをえらぶ。

3.画面の手順にしたがって設定完了

  • Alexaを設定モードに(アクションボタン●を長押し)
  • AlexaのWifi Amazon-xxxに接続
  • 接続するWifiを選択&パスワード入力
  • 完了

Page 1 of 39

Powered by WordPress & Theme by Anders Norén