Ваш шорткод должен работать, если он соответствует описанию, но вы должны заметить, что шорткоды должны return
значений, а не echo
их.Вы не опубликовали код, который используете, чтобы зарегистрировать его, поэтому я могу только предположить, что вы выводите контент вместо того, чтобы возвращать его.
С учетом сказанного, я бы просто сделал шорткод эхом из всеговся ссылка, таким образом, у вас есть немного более детальный контроль над всем этим:
add_shortcode( 'xyz-ips-link', function( $atts ){
extract( shortcode_atts( array(
'snippet' => 'dropbox',
'text' => 'Download the Documents',
'target' => '_new',
), $atts ) );
$link = sprintf( '<a href="%s" target="%s">%s</a>', get_field( $snippet ), $target, $text );
return $link;
});
Это позволит вам просто использовать [xyz-ips-link]
в любом месте вашего контента,
или <?php echo do_shortcode( '[xyz-ips-link]' ); ?>
в шаблонах вашей страницы.
Это также дает вам более детальный контроль над содержимым ссылки, например [xyz-ips-link snippet="dropbox" text="Some Alternative Text"]
.
Вы также заметите, что я использую get_field()
вместо the_field()
.WordPress (и ACF) имеют функции get_
, которые возвращают переменную для использования, и функции the_
, которые получают и выводят переменную по умолчанию.
Вы можете увидетьпример этого кода здесь , Примечание: у меня не установлен ACF, поэтому я заменил атрибут href
)