最近有个项目需要在wordpress里运行php代码,可是在编辑器里输入php代码后,前台只会以文本的方式输出,非常不方便,根本实现不了我的需求。下面我们来看一下该怎么才可以实现在wordpress里运行php代码吧。
原理介绍
懂php的都知道,PHP中嵌入其他PHP文件可以用include() 或者 require() 函数,所以,为了实现在wordpress里运行php代码,我们可以把想要运行的php代码放进另一个php文件里,然后通过某种机制来调用,用下面的代码就可以实现。把这段代码放进主题的functions.php文件即可。
<?php function php_include( $attr ) { $file = $attr['file']; $upload_dir = wp_upload_dir(); $folder = $upload_dir['basedir'] . '/php-content'. "/$file.php"; ob_start(); include ( $folder ); return ob_get_clean(); } add_shortcode( 'phpcode', 'php_include' ); ?>
上面的代码中的变量 $upload_dir['basedir'] 指代的是WordPress 中多媒体文件的上传路径(默认为/wp-content/uploads/),下面我们来举个例看下怎么使用这段代码。
假如我想在文章中运行下面这段php代码,我就把这段代码放进一个php文件中,命名为test.php
<form method="post"> <textarea name="string"><?php echo ( isset( $_POST['string'] ) ) ? $_POST['string'] : null ;?> </textarea> <br /> <input type="submit" name="submit" value="Reverse"/> </form> <?php if ( isset( $_POST['submit'] ) && empty( $_POST['string'] ) ) { echo "Field should not be left empty"; } elseif ( isset( $_POST['submit'] ) && ( $_POST['string'] ) ) { echo '<div>Copy Result</div>'; echo '<textarea>'; echo htmlspecialchars( strrev( $_POST['string'] ) ); echo '</textarea>'; }
然后用ftp工具在多媒体文件的上传路径(默认为/wp-content/vc/uploads/)新建一个php-content
文件夹(集中放这些php 文件,方便管理), 将 test.php
放到里头去。
这个时候,我们在wordpress编辑器里学文章的时候用下面的短代码插入短代码
[phpcode file="test"]
这样就可以运行相应的test.php
文件喽~~