1

Тема: Як видозмінити посилання прикріплених файлів на Wordpress?

Потрібно заливати на сайт багато PDF-файлів, для чого був встановлений плагін PDF Viewer, який працює із шорткодами [pdfviewer][/pdfviewer].

Коли я вставляю PDF як посилання на медіафайл, то генерується звичайне посилання:

<a href="http://link.com/file.pdf">Title</a>

Що потрібно дописати у functions.php, щоб посилання автоматично обрамлювалися шорткодом, приблизно отак:

[pdfviewer]http://link.com/file.pdf[/pdfviewer]

Допоможіть, будь ласка!

2

Re: Як видозмінити посилання прикріплених файлів на Wordpress?

Я варіант, можна створити нову кнопку в TinyMCE редакторі, для вставки pdf файлів
http://www.wpbeginner.com/wp-tutorials/ … ce-plugin/
TinyMCE має API за допомогою якого можна взаємодіяти з цим редактором, тобто, написати скрипт обгортання і вставки pdf
https://www.tinymce.com/docs/api/

Другий варіант, WP має "безліч" фільтрів і хуків для різних завдання, як приклад фільтр the_content
"Фільтр "the_content" використовується для фільтрації вмісту повідомлення після його вилучення з бази даних та перед друком на екрані."

function append_to_content( $content ) {
    global $post;
    return $content.'<br />This post was saved on '.$post->post_date;
}
add_filter( 'the_content', 'append_to_content' );

Чи "content_save_pre" фільтр - "фільтр "content_save_pre" є частиною групи динамічних фільтрів, які дозволяють санітарно обробляти вміст до збереження його в базі даних. Цей фільтр працює у wp-admin."

function my_filter_function_name( $content ) {
  // Process content here
  return $content;
}
add_filter( 'content_save_pre', 'my_filter_function_name', 10, 1 );

Ви можете отримати доступ до контенту, знайти тег " а " в якому є "href="[посилання].pdf"  посилання і замінити це на [pdfviewer][посилання].pdf[/pdfviewer].

Подякували: LoganRoss, ivaniura2

3

Re: Як видозмінити посилання прикріплених файлів на Wordpress?

Трохи поґуґливши, я знайшов цікавий варіант, який використовує хук для функції media_send_to_editor.

Докладно я розписав тут: https://ivaniura.org.ua/web/wordpress/y … wordpress.

А якщо коротко, то ось код, який дає стовідсоткову відповідь на моє запитання (вставляти у файл functions.php із папки шаблона):

function replace_pdf_link( $html, $id ) {
        $attachment = get_post( $id );
        $mime_type = $attachment->post_mime_type;
 
        if ( $mime_type == 'application/pdf' ) {
            $src = wp_get_attachment_url( $id );
            $html = '[pdfviewer]'. $src .'[/pdfviewer]';
        }
        return $html;
}
add_filter('media_send_to_editor', 'replace_pdf_link', 20, 3);
Подякували: Betterthanyou, 0xDADA11C72