Что делать с незакрепленными логотипами и заголовками, загруженными через собственный загрузчик wordpress?
Обычно, когда мы сортируем незакрепленные изображения, они также включают логотипы и изображения заголовков. Мой вопрос прост. Есть ли какой-либо способ защитить заголовок и логотипы от удаления?
Можно ли автоматически прикреплять их к странице (например, к логотипу или заголовку страницы) при загрузке, чтобы они не отображались незакрепленными в медиатеке.
1 answers
Вы можете добавить идентификатор как post_parent
во вложение изображения заголовка с помощью wp_update_post()
( даже несмотря на то, что это, кажется, очень и очень банальный способ сделать это!)
Сложность заключается в том, чтобы извлечь идентификатор из URL-адреса вложения; к счастью, Rarst решил эту проблему давным-давно, так что вы можете вручную добавить get_attachment_id()
к вашим функциям.
Далее вам нужно будет назначить идентификатор как post_parent
; каждый раз, когда вы будете сохранять изображение заголовка, выбранное изображение заголовка будет прикреплено к этому специальный идентификатор.
add_action( 'admin_init', 'attach_header_image' );
function attach_header_image() {
if ( isset( $_POST['default-header'] ) ) :
$header_image_url = get_header_image();
$header_image_id = get_attachment_id( $header_image_url ); // function via https://wordpress.stackexchange.com/a/7094/32946
$args = array(
'ID' => $header_image_id,
'post_parent' => 1 // assign header image to this ID
);
wp_update_post( $args );
endif;
}
Тем не менее, это кажется сложным способом решения проблемы, и, вероятно, было бы лучше написать исключение для функции удаления...
Информация об отладке:
- echo
get_header_image()
должно выводить ссылку на текущий URL-адрес изображения заголовка (верно только в том случае, если определено изображение заголовка) - echo
get_attachment_id( $header_image_url )
должно выводить идентификатор страницы вложения, который должен быть равен идентификатору страницы вложения, которую вы можете видеть на носителе (/wp-admin/post.php ?сообщение=123&действие=редактировать); также не забудьте скопировать и вставитьget_attachment_id()
функционируйте от Rarst до ваших функций! - оператор if, содержащий
default-header
, должен проверять наличиеname
поля заголовка проверяемого ввода, которое будет сохранено через$_POST