WordPress Шорткод PHP - PullRequest
       12

WordPress Шорткод PHP

0 голосов
/ 03 июля 2018

Я пытаюсь создать простой краткий код в Wordpress, который позволит мне запускать PHP на страницах. Это то, что я имею до сих пор, но это не работает. Совет?

По идее это будет [php] Вставьте сюда PHP [/ php ']

<?php
function php_shortcode( $attr, $content = null ) {
    return '<?php' . $content . '?>';
}
add_shortcode('php', 'php_shortcode');
?>

Спасибо.

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

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

// write '<?php ... ?>' into the editor 

add_filter('the_content', 'allow_php', 9);

function allow_php($content) {
    if (strpos($content, '<' . '?') !== false) {
        ob_start();
        eval('?' . '>' . $content);
        $content = ob_get_clean();
    }
    return $content;
}
0 голосов
/ 05 июля 2018

Подумав немного, я понял, что есть очевидное решение. Итак, кто-то, вероятно, написал плагин для этого, а кто-то имеет - https://wordpress.org/plugins/inline-php/.

Он состоит из около 40 строк PHP. Критическая уловка реализации состоит в том, что это делается не как шорткод, а как фильтр the_content.

add_filter('the_content', 'inline_php', 0);

Это делается перед другой обработкой фильтра 'the_content' и позволяет избежать всех проблем, с которыми я столкнулся, пытаясь использовать его в качестве шорткода. Конечно, существует значительный риск для безопасности.

0 голосов
/ 03 июля 2018

Сожалею, что вы исследуете концепцию, которая просто не может привести к успеху. PHP, который отображает шорткод, не может «также» отображать код внутри себя.

...