web-dev-qa-db-ja.com

カスタムメタボックスに「推奨の画像として使用」を追加する方法を教えてください。

私はユーザーが簡単なファイル入力フィールドを介して画像を追加することを可能にするカスタムメタボックスを実装しています(このサイトのコードに基づいて: メタボックススクリプト ) 。このコードを使用すると、複数の画像をページの添付ファイルとして追加できます。完全アップロードダイアログボックスを使用せずに画像を追加できます。画像ファイルを選択してページを公開するだけで、画像がアップロードされます。これはうまくいきますが、各画像にリンクを追加して、その画像を注目の画像として設定できるようにしたいと思います。

これはこれがどのように見えるかを示す画像です。 Image thumbnails with links

私は標準的な画像アップローダを詮索して、AJAX呼び出しとして引き起こされるJSファイル(/wp-admin/js/set-post-thumbnail.js)があることを見ることができて、これは画像を設定します特集画像として。次のコード(PHPのためエコー)を使用して、[おすすめ画像として使用]リンクを追加しています。

<script type=\"text/javascript\" src=\"/wp-admin/js/set-post-thumbnail.js\"></script>
<a class=\"wp-post-thumbnail\" id=\"wp-post-thumbnail-1915\" href=\"javascript:void(0)\" onclick=\"WPSetAsThumbnail(&quot;{$att->ID}&quot;, &quot;{$nonce}&quot;);return false;\">Use as featured image</a>

私はちょっとした試行錯誤でこれを理解しましたが、Uncaught ReferenceError: setPostThumbnailL10n is not definedというエラーが出てもうまくいきません。これは、setPostThumbnailL10nを提供するJSをロードしていないためで、おそらく他の問題もあります。

基本的に私はそれがこの作り付けの機能性を容易に利用することが実行可能であるかどうか把握しようとしています。私の他の選択肢は、代わりに特色として画像を保存する私自身のJSを転がすことです。私はまた特色としてイメージを設定解除することができることを要求するでしょう。これはグーグルが何かを思い付いていないようにこれは一種の未知の領域のように思われるように任意のアイデアは大歓迎です!

3
Rick Curran

必要なファイルをすべて含めたとしても、_nonceのようないくつかの追加の隠しフィールドを作成する必要があります。

check_ajax_referer( "set_post_thumbnail-$post_ID" );

また、次の値でAjax呼び出しのケースを識別するためのアクション隠しフィールドを作成する必要があります。"set-post-thumbnail"

あなたはあなた自身のAjax呼び出しを作成した方が良いですし、単にあなたのコールバック関数で使用してください:

    set_post_thumbnail( $post, $thumbnail_id );
//or
    update_post_meta( $post->ID, '_thumbnail_id', $attachment_id );

そして使用を設定解除する

delete_post_meta( $post_ID, '_thumbnail_id' );
3
Bainternet