web-dev-qa-db-ja.com

フロントエンドフォームの分類入力ボックスのオートコンプリート

私はユーザーが投稿を投稿できるようにするための簡単なフロントエンドフォームを作成しました - ここのチュートリアルと同様 - http://voodoopress.com/ 私はまた私が私のフォームのテキスト入力ボックスとして持っているカスタム分類法のカップルを持っています。これはすべてうまくいっていますが、とにかく私はポストタイトルと既存の値を自動提案する分類法を含むすべてのフィールドを持つことができるかどうか疑問に思いましたか?

ありがとう

2
coolGeek

これが最も良い方法であるかどうかわかりませんが、それは私にとってはうまくいきました。私は jquery-ui-autocomplete - とJSON APIプラグインの組み合わせを使用しました

まず上記のリンクから必要なjsファイルをダウンロードしてください。 Googleライブラリのjqueri-uiを使用しました。JSON APIプラグインのインストールとアクティブ化

私のカスタム投稿フォームの「title」入力フィールドに入力するときに、私は次に自動提案するために次のJavaScriptを使いました

<script type="text/javascript">
$(function() {
        $('#title').autocomplete({
        source: function( request, response ) {
        $.ajax({
                url: "http://example.com/?json=1&include=title",
                dataType: "json",
                data: {
                    featureClass: "P",
                    style: "full",
                    maxRows: 12,
                    name_startsWith: request.term
                },
            success: function( data ) {
            response( $.map( data.posts, function( item ) {
                return {
                            label: item.title,
                            value: item.title
                        }
                    }));
            }
            });
        },
        minLength: 2,
    });
});     
</script>

次のステップは、これをカスタム分類法で機能させることです。

1
coolGeek

私はこれについて少し掘り下げて過ごしました、そして、私はあなたの解決策を見つけたと思います! get_terms()name__likeパラメータが今後の道になると思われます。 name__likeのクエリは次のとおりです(/wp-includes/taxonomy.phpの1304行目から):$wpdb->prepare( " AND t.name LIKE %s", $name__like . '%' );。あなたがそれをname__likeパラメータとして与えたものは何でも取り、それにSQLワイルドカード、%を追加します。これはそれがあなたがそれを供給したもので始まるすべてのものを探すことを意味します。

それはほとんどデータを取得することで解決します...残念ながらそれはjavascriptに渡すことを処理しません。その挿入方法を正確にどのように処理しているかはわかりませんが、名前だけを含む配列を渡して、「新しい用語を作成するのか、古い用語を使用するのですか」の区別をさせます。提出時に処理されます。これのどの部分が明確でないかを私に言うならば(私はいくらかあるだろうと確信しています)、私はあなたにいくつかの疑似コードをあげることを試みることができます。

0
mor7ifer