Создание шорткода гиперссылки с использованием $output?

Я уже давно искал эту проблему, может быть, это просто или нет. Я не мог понять, как заставить это работать.

Результатом моей цели будет гиперссылка, связанная с мета-постом, с таким стилем.

<a href="href_link" style="color: #e67300" rel="nofollow"> Check out the r_title here!</a>

Код у меня есть:

<?php
$rtitle1 = get_post_meta($post->ID, 'r_title', true);
$rlink1 = get_post_meta($post->ID, 'href_link', true);
    function testfunction() {

    $output .= '<a href=\"'$rlink1'\" style=\"color: #e67300\" rel=\"nofollow\">';
    $output .= ' Check out the '$rtitle1' here!</a>';

    return $output;
    }
add_shortcode('shortcode', 'testfunction');
?>

1 ответ

Решение

Есть несколько проблем с вашим кодом.

Первая проблема связана с конкатенацией строк. Если вы хотите склеить строки, вам нужно использовать оператор конкатенации (точка: .):

$end = 'a string';
$start = 'This is ';
$string = $start.$end;

Если вы просто сопоставите переменные и строки (или любые другие скалярные типы), вы получите ошибки:

$end = 'a string';
$string = "This is "$end; // Error!

Вторая проблема заключается в том, что вы используете две переменные ($rtitle1 а также $rlink1) которые находятся в глобальном масштабе. Если вы хотите использовать глобальные переменные внутри функции, вам нужно объявить их как глобальные внутри функции:

$globalVar = 'test';
function test() {
  global $globalVar;
  echo $globalVar;
}

Третья проблема заключается в том, что вы забыли завершающие закрывающие скобки, ), для get_post_meta() функция:

$rtitle1 = get_post_meta($post->ID, 'r_title', true;
$rlink1 = get_post_meta($post->ID, 'href_link', true;

Они должны быть такими:

$rtitle1 = get_post_meta($post->ID, 'r_title', true);
$rlink1 = get_post_meta($post->ID, 'href_link', true);

Прежде чем подумать о том, чтобы попросить о помощи, вы должны посмотреть на сообщения об ошибках, которые вы получаете. Если вы не видели сообщение об ошибке раньше, Google его. Лучший способ чему-то научиться - это найти решение самостоятельно. Задавать вопросы - это когда вы пытались найти решение, но не можете его найти.

Другие вопросы по тегам