Na jednej z grup poświęconej WordPressowi pojawił się niedawno post, z prośbą o podpowiedź, jak wstawić na stronie link, który będzie zawierał jakby aktualny URL, ale z inną domeną. Cały ambaras jednak w tym, by to był link uniwersalny, który będzie się automatycznie dopasowywał do strony, na której w danym momencie będzie użytkownik.

Krótki kod z dynamicznym linkiem bazującym na aktualnym adresie URL

Sposobów jest kilka, więc uznałem, że zamiast podsyłać rozwiązanie bezpośrednio do autora pytania, stworzę z tego artykuł, bo może jeszcze komuś się to przyda. A przy okazji, zamiast przelewać mi potencjalne wynagrodzenie za przygotowanie odpowiedniego kodu, mam nadzieję, że autor zapytania przeleje coś – powiedzmy stówkę – na wybrane przez siebie schronisko dla zwierząt.

Tak więc mamy dowolną stronę, np.:

https://webinsider.pl/kontakt

A chcemy, by link wskazywał np. na stronę:

https://webinsider.eu/kontakt

Tak więc trzeba pobrać aktualny URL, podstawić nową domenę, i na koniec wygenerować krótki kod (shortcode), który będzie można w WordPressie umieścić w miejscu, gdzie ma się ów link wyświetlać. W tym celu wystarczy dodać odrobinę kodu PHP do pliku functions.php (motywu potomnego):

function webinsider_wp_shortcode_magic_link() {
	
	$current_slug = $_SERVER['REQUEST_URI'];
	
	$new_domain = 'https://webinsider.pl'; // <- ZMIENIĆ
	
	$new_url = $new_domain . $current_slug;
	$var = filter_var( strip_tags( $new_url ), FILTER_SANITIZE_URL );
	
	return '<a href="' . $var . '">link</a>';
}
add_shortcode( 'webinsider_wp_shortcode_magic_link', 'webinsider_wp_shortcode_magic_link' );
// Shortcode: [webinsider_wp_shortcode_magic_link]

Jeśli w ramach krótkiego kodu (shortcode) chcemy zwrócić inny krótki kod, to należy lekko zmodyfikować linijke „return”:

return do_shortcode( '[webinsider_shortcode url="' . $var . '"]Link[/webinsider_shortcode]' );

Można też zwracać sam zmodyfikowany adres URL, by np. podstawić krótki kod (shortcode) zamiast adresu odnośnika w jakimś elemencie (np. przycisk w page builderze):

return $var;

W miejscu, gdzie ma być link, wstawiamy krótki kod (shortcode):

[webinsider_wp_shortcode_magic_link]

To też można to zrobić na różne sposoby, choćby korzystając z opisywanej już kiedyś wtyczki PRyC WP: Add custom content to post and page.

(!) Zgłoś błąd na stronie