Первая попытка (не используйте это ... см. «Редактирование» ниже) :
Во-первых, вам нужно установить свой шорткод примерно так:
add_shortcode( 'metashortcode', 'metashortcode_addshortcode' );
Затем вы создадите функцию, в которой вам нужно будет добавить хук к wp_head
с чем-то вроде этого:
function metashortcode_addshortcode() {
add_action( 'wp_head', 'metashortcode_setmeta' );
}
Затем вы определите, что выхотите сделать в wp_head
:
function metashortcode_setmeta() {
echo '<meta name="key" content="value">';
}
Добавление шорткода [metashortcode]
должно добавить ваши метаданные по мере необходимости.Код был предоставлен только для того, чтобы помочь вам понять, как это сделать.Он не был полностью протестирован.
Редактировать: предыдущий код был просто концепцией и не может работать из-за порядка выполнения.Вот рабочий пример, который получит ожидаемый результат:
// Function to hook to "the_posts" (just edit the two variables)
function metashortcode_mycode( $posts ) {
$shortcode = 'metashortcode';
$callback_function = 'metashortcode_setmeta';
return metashortcode_shortcode_to_wphead( $posts, $shortcode, $callback_function );
}
// To execute when shortcode is found
function metashortcode_setmeta() {
echo '<meta name="key" content="value">';
}
// look for shortcode in the content and apply expected behaviour (don't edit!)
function metashortcode_shortcode_to_wphead( $posts, $shortcode, $callback_function ) {
if ( empty( $posts ) )
return $posts;
$found = false;
foreach ( $posts as $post ) {
if ( stripos( $post->post_content, '[' . $shortcode ) !== false ) {
add_shortcode( $shortcode, '__return_empty_string' );
$found = true;
break;
}
}
if ( $found )
add_action( 'wp_head', $callback_function );
return $posts;
}
// Instead of creating a shortcode, hook to the_posts
add_action( 'the_posts', 'metashortcode_mycode' );
Наслаждайтесь!