Być może zauważyłeś, jak niektóre popularne strony internetowe (jak eHow itp.) dodają link „czytaj więcej” do każdego tekstu skopiowanego z ich strony. To świetny sposób na zdobycie nowych użytkowników. Często ludzie kopiują i wklejają tekst ze stron internetowych do e-maili. Niektórzy używają tego do zapisania informacji na przyszłość, podczas gdy inni po prostu udostępniają ją znajomym, rodzinie i współpracownikom. W tym artykule pokażemy Ci, jak łatwo dodać link „czytaj więcej” do każdego skopiowanego tekstu z Twojego bloga WordPress, abyś mógł uzyskać dodatkowy ruch.
Uwaga: Aby zobaczyć to w akcji, skopiuj cokolwiek z tego posta i wklej to do swojego e-maila lub notatnika.
Pierwszą rzeczą, którą musisz zrobić, jest skopiowanie poniższego kodu do pliku functions.php Twojego motywu lub do wtyczki specyficznej dla witryny:
function add_copyright_text() {
if (is_single()) { ?>
<script type='text/javascript'>
function addLink() {
if (
window.getSelection().containsNode(
document.getElementsByClassName('entry-content')[0], true)) {
var body_element = document.getElementsByTagName('body')[0];
var selection;
selection = window.getSelection();
var oldselection = selection
var pagelink = "<br /><br /> Read more at WPBeginner: <?php the_title(); ?> <a href='<?php echo wp_get_shortlink(get_the_ID()); ?>'><?php echo wp_get_shortlink(get_the_ID()); ?></a>"; //Change this if you like
var copy_text = selection + pagelink;
var new_div = document.createElement('div');
new_div.style.left='-99999px';
new_div.style.position='absolute';
body_element.appendChild(new_div );
new_div.innerHTML = copy_text ;
selection.selectAllChildren(new_div );
window.setTimeout(function() {
body_element.removeChild(new_div );
},0);
}
}
document.oncopy = addLink;
</script>
<?php
}
}
add_action( 'wp_head', 'add_copyright_text');
Teraz, gdy ktoś odwiedzi Twoją witrynę i spróbuje skopiować Twoją zawartość, wraz z nią zostanie dodany link „czytaj dalej”. Nie zapomnij zmienić tekstu praw autorskich i dodać tam tytułu swojej witryny.
Edycja: Początkowo pobieraliśmy adres URL okna, ale jak zauważył jeden z naszych użytkowników, sprawiało to, że adresy URL wyglądały nieporęcznie. Zaktualizowaliśmy kod, aby wyświetlał go tylko na stronach pojedynczych wpisów i używał wp_shortlink. Więc używałoby to czegoś w rodzaju: twojastrona.com/?p=23. Jeśli używasz niestandardowego krótkiego adresu URL, tak jak my: wpbeg.in, wtedy wyświetli się markowy krótki adres URL.


Pszczoła
Cześć,
wygląda na to, że ten kod nie działa, ani na Twojej stronie internetowej tutaj, ani na mojej stronie internetowej przy użyciu Twojego fragmentu kodu (WP 6.2). Czy możesz to sprawdzić? Dziękuję.
Wsparcie WPBeginner
Kod nadal działa, zalecamy wyłączenie wszelkich wtyczek i/lub użycie przeglądarki incognito, aby zapobiec dodatkom, aby sprawdzić, czy któryś z nich nie powoduje konfliktu.
Admin
Edward Elric
Czy to nadal działa w 2020 roku z najnowszym WordPressem?
Wsparcie WPBeginner
O ile nie usłyszymy inaczej, kod powinien nadal działać po dodaniu go do Twojej witryny.
Admin
Junuk
Cześć, Dziękuję za Twoje dobre informacje!
Zastosowałem kod, który mi podałeś, z wtyczką BItly na mojej stronie, ale działa czasami, a czasami nie.
Czy ten kod ma związek z wtyczką Cache? Czy możesz mi powiedzieć, gdzie na mojej stronie powinienem spojrzeć?
Wsparcie WPBeginner
Jeśli masz włączoną wtyczkę do buforowania, prawdopodobnie będziesz musiał wyczyścić całe buforowanie na swojej stronie, aby prawidłowo się zaktualizowało. Aby wyczyścić pamięć podręczną, możesz zapoznać się z naszym przewodnikiem tutaj: https://www.wpbeginner.com/beginners-guide/how-to-clear-your-cache-in-wordpress/
Admin
Pierre
Cześć,
Dzięki, działa dobrze w artykule z 2019 roku, ale czy można sprawić, żeby działało z niestandardowym typem posta?
Mam Eventon, WP News i Scrolling Widgets.
Wsparcie WPBeginner
Musiałbyś zmodyfikować is_single na is_singular i dodać nazwę swojego niestandardowego typu posta
Admin
Will
Czy masz jakieś rady, jak dodać parametry śledzenia Google na końcu każdego adresu URL? Biorąc pod uwagę, że już używasz ?p= dla nazwy posta na końcu.
Akash
Czy jest jakiś prosty sposób, aby działało to również na kategoriach?
Jaśmin
Dzięki za to, świetnie działa w przypadku postów, ale gdy tekst jest kopiowany z wydarzeń, nie pobiera adresu URL strony – jakieś rady? Dzięki.
Michele
To jest niesamowite. Dzięki. Kiedy mówiło się o klasie – entry content, oznaczało to, że nie działało to dla około 90% tekstu na mojej stronie, ponieważ mój tekst nie używał tej nazwy klasy. Więc jeśli ktoś inny napotka ten problem, możesz zmienić „entry content” na „body”. Tak właśnie zrobiłem.
var body_element = document.getElementsByTagName(‘body’)[0]; (linia 13)
Teraz działa wszędzie.
Meenu
Jak mogę ograniczyć zawartość?
Dave
Dziękuję bardzo, całe formatowanie tekstu zostało zmienione i wklejone jako jedna linia. Ale potrzebuję formatowania tekstu takiego, jakie jest. Proszę, pomóż mi to uzyskać.
Ark
To samo tutaj, wszystkie łamania linii zniknęły po wklejeniu.
Jens | Sir Apfelot
Damn… I am stupid… I added it to the themes custom JS… thats not working.
Jens | Sir Apfelot
Właśnie dodałem skrypt do mojego bloga wordpress, ale nie dostaję żadnego dodatku na końcu schowka...
Any ideas? I am not sure, if its because I am working on a mac… but I guess the javascript should work on Firefox on a mac too…
Yash Jhade
Podczas wklejania na blogera pojawia się następujący błąd
Błąd parsowania XML, linia 2237, kolumna 96: Wartość atrybutu „href” powiązanego z typem elementu „a” nie może zawierać znaku „<”.
Jakieś rozwiązania?
Dzięki.
matt
ta funkcja sprawia, że kopiowanie i wklejanie jest bardziej frustrujące. Na przykład, jeśli skopiuję i wkleję nagłówek do edycji Wikipedii, może to zepsuć formatowanie, jeśli nie będę ostrożny i wymaga dodatkowej pracy.
Anon
Jako użytkownik nie mogę tego znieść. Proszę, nie dodawaj tego.
Alan
Czy ktoś wie, jak zachować format?
Podczas używania tego wtyczki wszystkie spacje, łamanie linii i formatowanie znikają.
Philip-Daniel Kleudgen
Działa jak marzenie! Jedyną rzeczą, którą chciałbym, aby robiło, jest ograniczenie ilości skopiowanego tekstu do na przykład 150 słów lub czegoś podobnego.
Salud Casera
Już u mnie nie działa.
Działało wcześniej, ale myślę, że ma to więcej wspólnego z motywem niż z wersją WP
Alyson
Niestety, kod nie działa z WP 3.8
Przetestowałem to na świeżej instalacji. Proszę, potwierdź to. Czy masz plany aktualizacji kodu, aby działał?
Wsparcie WPBeginner
Przetestowaliśmy to na świeżej instalacji WP 3.8 i działa idealnie po naszej stronie.
Admin
Erik
Właściwie też nie mogę tego sprawić, żeby działało.
Roselle
Witam,
Na początku nie mogłem tego uruchomić. Ale po dokładnym zbadaniu odkryłem winowajcę:
W 8. linii kodu zobaczysz to:
document.getElementsByClassName(‘entry-content’)[0], true))
To jest linia, która mówi kodowi: „hej, jeśli ktoś kopiuje tekst z tekstu o tej nazwie klasy, dodaj link czytaj dalej”
Wszystko, co musisz zrobić, to użyć Firebuga, aby dowiedzieć się, pod jaką nazwą klasy znajduje się treść Twojego posta.
Mam motyw potomny, który edytowałem wielokrotnie, więc mój nie był domyślnym „entry-content”. Podejrzewam, że nazwa Twojej klasy również jest inna.
Powodzenia,
Roselle
Salud Casera
Jakie są kroki, aby postępować z Firebugiem, aby dowiedzieć się, jaka jest nazwa klasy posta?
Gabriel
Witam,
Wielkie dzięki za ten świetny artykuł, ale mam problem. Chciałbym uzyskać permalink, a nie skrócony link. Czy ktoś może mi powiedzieć, jak mogę to zrobić?
Pozdrawiam
Personel redakcyjny
Zamień
echo wp_get_shortlink(get_the_ID());nathe_permalink();Admin
Gretchen Louise
Czy jest jakiś prosty sposób, aby działało to również na pojedynczych stronach?
Personel redakcyjny
Tak. Zmień kod linii 2 z:
if (is_single()) do if (is_singular())
Admin
Gretchen Louise
Dziękuję! Działa, z wyjątkiem tego, że nie pobiera linku dla stron… tylko postów.
Personel redakcyjny
To dziwne. get_the_id powinno działać zarówno dla stron, jak i wpisów.
Gretchen Louise
Działa mi na KindredGrace . com, ale nie pobiera identyfikatora dla stron, tylko postów.
Personel redakcyjny
Spróbuj dodać zmienną globalną. Ponieważ get_the_id działa dla postów, a strony są również „typem postu”
Gretchen Louise
Próbowałem w ten sposób i nadal bez powodzenia w pobieraniu krótkiego linku dla stron:
// Dodaj tekst praw autorskich
function add_copyright_text() {
global $post; { ?>
Brian York
Ta zmiana zadziałała u mnie. Jednak proszę dokładnie sprawdzić, czy masz swoją treść pod ‘entry-content’, w przeciwnym razie zmień to (F12 w Chrome). Dzięki WPBeginner!!
Brian York
Właściwie to nie działa poprawnie. W ogóle nie działa w IE i bez względu na to, co zrobię, nie kopiuje części HTML, ale zawsze konwertuje ją na zwykły tekst, przez co nigdy nie utworzy linku.
alan
Mam ten sam problem, usuwa całe formatowanie, czy ktoś zna rozwiązanie?
VIVROCKS
Świetny trik. Jest też wtyczka do tego: http://wordpress.org/extend/plugins/read-more-copy-link/
Collin Weeks
Uwielbiam Twoją stronę! Dziękuję za poświęcony czas na podzielenie się z innymi.
Mairaj Pirzada
Miło, Post, ale zawsze nie lubię kodowania, to mnie myli!
Helder
To nie działa, nawet z treścią wpbeginner.com
Personel redakcyjny
Usunęliśmy kod z naszej strony internetowej. Niektórzy użytkownicy narzekali, że uznali go za irytujący.
Admin
Rafiul Islam
WOW… Wielkie, wielkie dzięki za udostępnienie tego… Cierpię z tego powodu…
Jeszcze raz dziękuję.
Lorenzo Solís
Czy ktoś wie, jak nie wyświetlać „Linku Czytaj Więcej”, gdy tytuł posta jest kopiowany?
Dzięki!
Personel redakcyjny
Tak, jest to możliwe. Zmień tag selektora z body na ID div lub coś podobnego. Złożyłem prośbę. Nasi programiści dadzą mi znać, abym mógł zaktualizować artykuł.
Admin
Lorenzo Solís
Dzięki. Właśnie spróbowałem z var div = document.getElementById(‘copyright’); w linii numer 6 i dodałem de id=”copyright” do zawartości div, ale otrzymuję ten sam wynik co z Twoim kodem. Przepraszam, nie jestem programistą.
Personel redakcyjny
Sprawdź teraz kod. Powinien działać.
Paul
Dzięki, wygląda interesująco, wypróbuję wkrótce
Lisa
Działało również dobrze w nowej wiadomości e-mail wysłanej z Outlooka, więc powiedziałbym, że to problem z Gmailem. Dzięki!
Personel redakcyjny
Właśnie wypróbowałem z Gmailem.. Działa tutaj dobrze.
Admin
Lisa
Interesujące i użyteczne; jednak zaskoczyło mnie, że test kopiowania nie zadziałał (przynajmniej u mnie) podczas pisania wiadomości e-mail w Gmailu — nic się nie pojawiło po wklejeniu skopiowanego tekstu, a okno edycji wiadomości e-mail po prostu się zawiesiło. Testowanie skopiowanego fragmentu w Notatniku działało bez zarzutu, więc nie wiem, jaki może być problem z Gmailem.
Dzięki za wskazówkę!
Albert Albs
To dobra opcja, Syed. Dziękuję za udostępnienie. Ale jeśli moglibyśmy drukować krótki adres URL posta, byłoby to jeszcze lepsze dla właścicieli stron internetowych.
Obecnie drukuje długi adres URL. Jeśli trafiłem tutaj przez subskrypcję biuletynu Feedburner, pojawia się również adres URL śledzenia UTM.
Mam nadzieję, że rozumiesz. Czy to możliwe?
Personel redakcyjny
Aha. Dobra sugestia. Zapisuję to na liście rzeczy do zrobienia dla WPBeginner.
Edit: Just updated the code
Admin
Albert Albs
To jest szybkie i inteligentne.
Jedno pytanie: Dlaczego usunąłeś URL autora z formularza komentarza? Zawsze widzę, że wiele blogów opartych na WordPressie przyznaje autorowi komentarza kredyt w polu URL z atrybutem NoFollow.
Czy jest jakiś konkretny powód usunięcia pola Author URI? Czy są jakieś eksperymenty związane z aktualizacją Penguin?
Przy okazji, nie otrzymuję żadnych powiadomień o komentarzach, nawet po zaznaczeniu opcji „Powiadom mnie o kolejnych komentarzach przez e-mail”.
Gabe Diaz
Wow, teraz to jest świetna wskazówka! Ułatwia cytowanie i pokazywanie atrybucji, a także dodaje link dla tych, którzy szybko przeglądają i kradną treści. Bardzo fajnie!
Emily Sandford
Bardzo dziękuję za to. Było to tak łatwe do zrobienia i coś, nad czym zastanawiałem się przez dość długi czas. Doceniam to!