jonathanwold
  • 0
Учитель

Получение пользовательской ссылки на вложение

  • 0

Я хотел связать изображения в галерее с пользовательским URL-адресом.

Я знаю, что могу добавить дополнительное поле и сделать это так

Однако я нашел этот билет на Trac, который изменяет поле «URL-адрес ссылки», чтобы принимать пользовательские ссылки. Мне нравится, как это работает, и я хотел бы, чтобы это работало.

Проблема в том, что я не могу понять, как получить доступ к данным. Я использую get_children для создания массива для цикла. URL-адрес ссылки не включается в результаты.

Пробовал get_attachment_link — беда, он не просто вытаскивает из поля, функция сама генерирует ссылку.

Есть идеи? Спасибо!

Share
  1. В билете Trac, который вы указали внизу, есть решение, позволяющее заставить его работать.

    function _save_attachment_url($post, $attachment) {
        if ( isset($attachment['url']) ) 
            update_post_meta( $post['ID'], '_wp_attachment_url', esc_url_raw($attachment['url']) ); 
        return $post;
    }
    add_filter('attachment_fields_to_save', '_save_attachment_url', 10, 2);
    
    function _replace_attachment_url($form_fields, $post) {
        if ( isset($form_fields['url']['html']) ) {
            $url = get_post_meta( $post->ID, '_wp_attachment_url', true );
            if ( ! empty($url) )
                $form_fields['url']['html'] = preg_replace( "/value='.*?'/", "value='$url'", $form_fields['url']['html'] );
        }
        return $form_fields;
    }
    add_filter('attachment_fields_to_edit', '_replace_attachment_url', 10, 2);
    

    Таким образом, после этого кода вы сможете добавлять свои пользовательские ссылки в поле «URL-адрес ссылки».

    И чтобы получить его, вам просто нужен идентификатор вложения, и вы можете получить его с помощью:

    get_post_meta( $post->ID, '_wp_attachment_url', true );
    
    • 0

Оставить ответ

You must login to add an answer.