Добавьте bbcode [b], [i], [code] и т. Д. В WordPress через functions.php - PullRequest
1 голос
/ 25 января 2011

Эй, ребята, во-первых, я играл с шорткодами, но они не работают.У меня может быть какой-то конфликт (пытался найти его часами), но пока это не вариант.Но следующее работает, позволяя моим комментаторам использовать теги [img] в своих комментариях (которые заменяются HTML-эквивалентами), и я хотел бы остановиться на этом.

Пожалуйста, никаких плагинов!

Что я хотел бы сделать, так это изменить следующий бит кода, чтобы [b], [i] и [code] (как в нижнем, так и в верхнем регистре) выплевывать htmlэквиваленты, поэтому мои комментарии могут просто использовать стандартные bb-коды, когда они комментируют, очень похоже на то, как работает текущая функция:

function embed_images($content) {
    $content = preg_replace('/\[img=?\]*(.*?)(\[\/img)?\]/ei', '"<img src=\"$1\" alt=\"" . basename("$1") . "\" />"', $content);
    return $content;
}

add_filter('comment_text', 'embed_images');

Я пробовал и пытался, но не могу заставить его работать.Любая помощь в кодировании была бы очень признательна.Спасибо, ребята.

Редактировать: Хорошо, ребята, все заработало.Это выглядит хорошо?Я имею в виду, что это работает, но как код ... приличный?

function embed_bold($content) {
    $content = preg_replace('/\[b]*(.*?)(\[\/b)?\]/ei', '"<strong>$1</strong>"', $content);
    return $content;
}

add_filter('comment_text', 'embed_bold');

Ответы [ 2 ]

0 голосов
/ 28 января 2011

Хорошо, dqhendricks, основываясь на вашем соглашении о кодировании, я объединил все bbcodes в одну функцию. Есть серьезные нарушения кодирования или это выглядит хорошо?

//add bbcode tags
function embed_bbcode($content) {
    $content = preg_replace('/\[img](.+?)\[\/img]/ei', '"<img src=\"$1\" alt=\"" . basename("$1") . "\" />"', $content);
    $content = preg_replace('/\[b](.+?)\[\/b]/ei', '"<strong>$1</strong>"', $content);
    $content = preg_replace('/\[i](.+?)\[\/i]/ei', '"<em>$1</em>"', $content);
    $content = preg_replace('/\[code](.+?)\[\/code]/ei', '"<code>$1</code>"', $content);
    $content = preg_replace('/\[quote](.+?)\[\/quote]/ei', '"<blockquote>$1</blockquote>"', $content);
    return $content;
}

add_filter('comment_text', 'embed_bbcode');

Еще раз спасибо за вашу помощь.

0 голосов
/ 25 января 2011

Я однажды написал в блоге сообщение об использовании regex для bbcodes.Однако большинство рекомендует использовать расширение PHP, специально созданное для BBCodes.Вот статья:

http://www.spotlesswebdesign.com/blog.php?id=12

/\[b](.+?)\[\/b]/i

заменить на

'<strong>$1</strong>'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...