Как использовать краткий код PHP из настраиваемого поля в качестве ссылки href в Wordpress? - PullRequest
0 голосов
/ 05 октября 2018

На моей странице WordPress (которую я буду использовать в качестве шаблона для дублирования) мне нужно использовать настраиваемое поле 'dropbox' в качестве URL-адреса href.

Я создал фрагмент кода PHP (шорткод) для использованияв качестве замены для URL: [xyz-ips snippet = "dropbox"]

Вот код PHP внутри шорткода:

<?php the_field('dropbox'); ?>

Вот код на странице:

<a href="[xyz-ips snippet=" dropbox"]"="" target="_new">download the documents</a>

Этот короткий код не будет передавать URL-адрес из настраиваемого поля в href.Есть мысли?

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 05 октября 2018

Получается, что существует особый способ вызова пользовательских полей URL (ACF).Я вставил приведенный ниже код в шорткод PHP Code.Это работает как шарм!

    <?php 

$link = get_field('dropbox');

if( $link ): ?>

    <a class="button" href="<?php echo $link; ?>" target="_new">download documents</a>

<?php endif; ?>
0 голосов
/ 05 октября 2018

Ваш шорткод должен работать, если он соответствует описанию, но вы должны заметить, что шорткоды должны 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)

0 голосов
/ 05 октября 2018

Попробуйте

$dropdown = get_the_field('dropbox');
echo do_shortcode($dropbox);

ИЛИ

$dropdown = get_field('dropbox');
echo do_shortcode($dropbox);
0 голосов
/ 05 октября 2018

Привет Пожалуйста, попробуйте, это может работать для вас.

echo do_shortcode('dropbox');
...