Код расширенных пользовательских полей отображается в виде открытого текста при написании в плагине Code Snippets. Как исправить? - PullRequest
0 голосов
/ 28 марта 2019

В Wordpress я пытаюсь добавить ссылку на страницу отдельного продукта, используя фрагменты кода с расширенными настраиваемыми полями.Вместо ссылки мой код отображается в виде открытого текста.

Я пробовал этот код:

function product_datasheet_below_summary() { ?>
    $link = get_field('datasheet');

if( $link ): 
    $link_url = $link['url'];
    $link_title = $link['title'];
    $link_target = $link['target'] ? $link['target'] : '_self';
    ?>
    <a class="button" href="<?php echo esc_url($link_url); ?>" target="<?php echo esc_attr($link_target); ?>"><?php echo esc_html($link_title); ?></a>
<?php
};
add_action( 'ocean_after_single_product_meta', 'product_datasheet_below_summary', 5 );

Это не работает.Я надеялся на ссылку на таблицу данных, но она просто печатает в виде открытого текста:

$link = get_field(‘datasheet’); if( $link ): $link_url = 
$link[‘url’]; $link_title = $link[‘title’]; $link_target = 
$link[‘target’] ? $link[‘target’] : ‘_self’; ?>

, за которым следует общая ссылка на квадратную кнопку.

Что я здесь не так делаю?Большое спасибо за вашу помощь.


Спасибо за ваш совет.Вместо использования фрагментов кода я просто создал дочернюю тему и отредактировал соответствующий файл .php, добавив следующее:

`

                if( $link ): 
                    $link_url = $link['url'];
                    $link_title = $link['title'];
                    $link_target = $link['target'] ? $link['target'] : '_self';
                    ?>
            <a class= "button" id="datasheet-button" href="<?php echo esc_url($link_url); ?>" target="<?php echo esc_attr($link_target); ?>"><?php echo esc_html($link_title); ?></a>
            <?php endif; ?>`

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Ваша функция немного повсюду, я убрал ее, чтобы работать с выводом, который вы хотите использовать с помощью объекта, вместо того, чтобы выводить несколько частей кода кнопки.На мой взгляд, этим проще управлять, и он выглядит лучше, так как HTML-код и PHP-код максимально разделены:

function product_datasheet_below_summary() {
    $link = get_field('datasheet');

    if( $link ){
        $link_url = $link['url'];
        $link_title = $link['title'];
        $link_target = $link['target'] ? $link['target'] : '_self';
    } ob_start();?>

    <?php if($link):?>
        <a class="button" href="<?php echo $link_url;?>" target="<?php echo $link_target;?>"><?php echo $link_title;?></a>
    <?php endif;

    return ob_get_clean();
} add_action( 'ocean_after_single_product_meta', 'product_datasheet_below_summary', 5 );?>
0 голосов
/ 28 марта 2019

Вы получаете открытый текст после первого ?>, потому что это конечный тег php, а плагин Code Snippets не позволяет использовать несколько операторов php и просто выдает сбой и выводит простой текст, а не выполняет код.

Вам нужно переписать всю функцию как один оператор php и echo все кнопки html вместе с переменными php, разделенными в html с ..,Простой пример:

<?php 
$var = "Hello World";
echo "<p>The value of the variable is : " . $var . "</p>";
?>

И вам может понадобиться использовать более стандартную конструкцию ACF get field тоже:

$value = get_field( "text_field" );

Найдите в SE дополнительные примерыэхо html в php.

...