Задать вопрос
@Giorgos

Как подставить ссылку на источник при копировании текста?

В интернете лежит много видов кода для подставления источника при копировании текста. Но многие устарели, содержат дыры в безопасности и т.п. На данный момент я использую такой вариант, и по функциям он меня вполне устраивает:

add_action( 'wp_footer', function () {
if ( !current_user_can( 'manage_options' ) ) {    
$source_text = __( '<br><br>Источник: %link%' );
$source_text = str_replace('"', '\"', $source_text);
echo '<script>';
echo 'document.oncopy = function () {';
echo 'var bodyElement = document.body;';
echo 'var selection = getSelection();';
echo 'var link_url = document.URL;';
echo 'var page_link = "' . $source_text . '";';
echo 'page_link = page_link.replace("%link%", " " + link_url + " ");';
echo 'var copy_text = selection + page_link;';
echo 'var divElement = document.createElement("div");';
echo 'divElement.style.position="absolute";';
echo 'divElement.style.left="-99999px";';
echo 'bodyElement.appendChild(divElement);';
echo 'divElement.innerHTML = copy_text;';
echo 'selection.selectAllChildren(divElement);';
echo 'window.setTimeout(function() {';
echo 'bodyElement.removeChild(divElement);';
echo '},0);';
echo '}';
echo '</script>';
}
});


Можете подсказать, какой современный, чистый, безопасный код лучше всего использоваться в functions.php темы сайта (Вордпресс) для тех же целей? Чтобы он грузился в футере, содержал абзацные отступы для источника, не работал для админов сайта (а в идеале чтобы ещё и срабатывал только в типе страниц post - в теле статей, а не на всех страницах сайта + срабатывал только при выделении минимум стольки-то символов + срабатывал всего 1 раз на одну страницу, если такое возможно).
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Вы неправильно осмыслили задачу, и получился франкенштейн. Одна задача - это вставка ссылки при событии oncopy. Это делается на чистом Javascript, абсолютно не требует PHP, и никакого отношения к WordPress не имеет. Можете эту часть спросить отдельно в хабе Javscript - хотя я подозреваю, что в интернете уже выложена куча решений.
А вторая задача у Вас уже решена; я только использую хук на другое событие:
add_action( 'wp_enqueue_scripts', function () {
    if ( !current_user_can( 'manage_options' ) ) {
        wp_enqueue_script('oncopy_addlink', '/path/to/script.js');
    }
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы