Piszę prostą wtyczkę WordPress, która używa shortcode. Chcę, aby strona zawierająca kod krótki miała konkretne tagi <meta>
. czy to możliwe? A jeśli tak, czy istnieje elegancki sposób na zrobienie tego?Użyj kodu WordPress, aby dodać <meta> tagi
Wiem, że mogę dodawać znaczniki <meta>
za pomocą haka wp_head
, ale chcę, aby treść metatagów pasowała do ciągu znaków utworzonego przez wtyczkę. Mogłabym przenieść cały kod do nagłówka, ale nie jestem pewien, jak odwołać się do niego później z shortcode. Innymi słowy, kiedy deklaruję zmienną w <head>
za pomocą filtru, nie jest ona dostępna dla metod klasy, do których dzwonię z krótkim kodem.
Wszelkie pomysły?
UPDATE:
Miła rozwiązanie zostało zaproponowane w którym funkcja obsługi dla SHORTCODE dodaje akcję do wp_head haka:
add_shortcode('fakeshortcode', 'fakeshortcode_handler');
function fakeshortcode_handler() {
function add_meta_tags() {
//echo stuff here that will go in the head
}
add_action('wp_head', 'add_meta_tags');
}
to puchną, ale problemem jest to, że wp_head dzieje się przed shortcode zostanie sparsowany i dodaje akcję (więc nic nie zostanie dodane do głowy z kodem powyżej ALONE). Aby to zadziałało, pożyczyłem rozwiązanie w this post. Zasadniczo jest to funkcja, która "patrzy w przyszłość" na post i widzi, czy nadchodzi jakiś skrót. Jeśli tak, to IT dodaje add_action('wp_head'...
.
EDYTOWANIE: Usunąłem moje następne pytanie dotyczące przekazywania zmiennej. To nowe pytanie here.
To jest fajne. Nie zdawałem sobie sprawy, że shortcode został sparsowany PRZED działaniami wp_head. Oddam to od razu. Jeśli masz rację, jestem pewien, że to rozwiąże mój problem ładnie! – emersonthis
Moje podejrzenie było prawidłowe. Działania w domenie wp_head są wyzwalane PRZED przetworzeniem krótkiego kodu. To rozwiązanie nie działa dokładnie tak, jak to opisano. JEDNAK, podejście może być modyfikowane ... [zobacz moją aktualizację powyżej] – emersonthis
Przepraszam Emerson, źle zrozumiałem, co próbujesz zrobić.NIE jest wykonywane wcześniej. Dlatego też zredagowałem moje rozwiązanie, aby działało poprawnie. – Maxime