Как добавить «Использование в качестве изображения» в пользовательский метабокс?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/11489

  •  16-10-2019
  •  | 
  •  

Вопрос

Я внедряю пользовательский мета -поле, который позволяет пользователю добавлять изображения через поле простого ввода файла (на этом сайте на основе кода: Мета -бокс сценарий) Этот код позволяет добавлять несколько изображений в качестве вложений на страницу, и он делает это без полного диалогового окна «Загрузка», вы просто выбираете файл изображения и публикуете страницу, а изображение загружается. Это прекрасно работает, однако, я хотел бы иметь возможность добавить ссылку на каждое изображение, чтобы вы могли установить изображение в качестве изображения.

Вот изображение, показывающее, как это выглядит:Image thumbnails with links

Я обнялся вокруг стандартного загрузчика изображения и вижу, что существует файл JS (/WP-Admin/js/set-post-thumbnail.js), который запускается в виде вызова Ajax, и он устанавливает изображение в виде представленного изображения. Я использую следующий код (Echo'd by PHP, отсюда и Escaping), чтобы добавить ссылку «Использовать как показанное изображение»:

<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, это потому, что у меня нет загруженного JS, который обеспечивает setPostThumbnailL10n И, наверное, другие проблемы!

По сути, я пытаюсь выяснить, возможно ли легко использовать эту встроенную функциональность. Другой мой вариант - бросить мой собственный JS, который сохраняет изображение, как показано, вместо этого. Мне также потребуется возможность не сформулировать изображения, как показано. Любые идеи очень приветствуются, так как это кажется своего рода неизведанной территорией, так как она гугливая, это ничего не придумало!

Это было полезно?

Решение

Даже если вы включили все необходимые файлы, вам все равно придется создать некоторые дополнительные скрытые поля, такие как _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' );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top