Как я уже сказал в комментариях
-Как функция gettarget может получить доступ к своему брату-члену класса target? - Не может, в WordPress страница не имеетбыло завершено, когда вызывается [ваш шорткод].Кроме того, только более короткий контент в открытом и закрытом шорткоде [start]content[/start]
передается в шорткод, ни один из внешнего контента не доступен (без использования javascript)
Вы можете использовать фильтр, такой как add_filter( 'the_content', 'filter_function_name' )
aрегулярное выражение /\[gettarget\]/
и что-то, что не является коротким кодом [gettarget]
, поскольку WP оставляет их, если они не являются действительными короткими кодами.И тогда, когда у вас есть полный контент в ваших руках, вы можете получить доступ к тому, что вы хотите в DOM.и т. д.
И этот ответ казался таким же хорошим ответом, как и любой другой, поэтому ...
Примерно так:
add_filter( 'the_content', 'filter_function_name' );
function filter_function_name($content){
//if no [gettarget] bail
if(false === strpos($content,'[gettarget]')) return $content;
$doc = DOMDocument::loadHTML($content);
$xpath = new DOMXpath($doc);
var_dump($xpath);
//for example remove [gettarget] our not shortcode, shortcode
$content = preg_replace('/\[gettarget\]/', '', $content);
return $content;
}
У меня есть толькокогда-либо использовал Dom Document один раз (потом я узнал о PHPQuery и больше никогда не смотрел на него).Но, таким образом, вы не удваиваете загрузку страницы, я действительно не уверен, что вы получаете от этого $doc->loadHTMLFile($_SERVER['SCRIPT_NAME'])
изнутри WordPress.Может быть, просто файл шаблона или что-то в этом роде?
Как я уже сказал выше, я знаю, что content
- это то, что WordPress собирается выложить на странице.Не говоря уже о том, что я понятия не имею, как бы вы внесли какие-либо изменения в вывод по сравнению с тем, как это было у вас.Таким образом, вы можете просто изменить содержимое и вернуть его, и оно будет изменено.
-note- Еще одна вещь, это была минута, но если я помню, если у вас есть что-то вроде шорткода [gettarget]
, но вы неу него фактически есть шорткод, он просто остается в контенте.Если это правильно, то, что я сказал выше, должно быть довольно близко.Мы можем использовать это в наших интересах и сделать так, чтобы это выглядело как шорткод внутри административной области WP и в выводе (удаляя его).
Я думал сделать это с помощью JavaScript, но, увы,лень вкладывать столько в это ...
В любом случае надеюсь, что это поможет.