Чтобы добиться этого, я добавил следующий код в свой файл function.php файл:
Код: Выделить всё
add_shortcode( 'test', 'shortcode_to_display_code' );
function shortcode_to_display_code( $atts, $content ) {
// Strip any remaining tags from user input (optional)
$code_content = strip_tags( $content );
// Set variables
$line_number = 1;
$output = '';
// Split code content by new lines, removing empty lines
$code_lines = array_filter( explode( "\n", $code_content ), function( $line ) {
return trim( $line ) !== '';
} );
// Loop through each line
foreach ( $code_lines as $line ) {
$line = htmlspecialchars($line, ENT_NOQUOTES, 'UTF-8');
$output .= '
' . $line_number . '
' . $line . '';
$line_number++;
}
// Build final HTML structure
$final_html = '
Num
CODE
' . $output . '
';
// Return final HTML
return $final_html;
}
С помощью приведенного выше кода любой код, который я помещаю в шорткод:
Код: Выделить всё
[test]
// my code
[/test]
Однако вместо реальных символов (
Код: Выделить всё
e.g., < > / " ";Эта проблема вызвана строкой:
Код: Выделить всё
$line = htmlspecialchars($line, ENT_NOQUOTES, 'UTF-8');
Если я удалю эту строку, код будет отображаться правильно, но функция htmlspecialchars() будет необходим для предотвращения атак XSS.
Учитывая вышеизложенное, существует ли лучший или более эффективный способ отобразить желаемый код без использования плагина?
Есть ли способ отобразить вывод кода, который я вставил в шорткод, без каких-либо манипуляций?
Подробнее здесь: https://stackoverflow.com/questions/787 ... n-the-code
Мобильная версия