北极寒流 » 网络资源 » 修改WordPress主题文件functions不出错技巧 - 2010.11.22

修改WordPress主题文件functions不出错技巧

使用WordPress程序搭建博客的博主们有个通病就是喜欢折腾WordPress,本人也不例外,不过对于我等WordPress菜鸟来说,在折腾WordPress时,一不小心改错一个文件就会造成WordPress博客出错无法打开。而在折腾WordPress时,最经常要修改的就是functions.php文件,很多功能都必须改动functions.php,但是functions.php又是WordPress的一个核心文件,一点错误都会造成WordPress博客打不开。有没有比较简单的不让在修改functions.php出错的办法呢?今天给大家分享一下本人所知的修改WordPress主题文件functions不出错技巧。

WordPress其实有个很实用的功能-include all PHP script功能,我们只要在你的functions.php文件正常工作时加入下面的代码(这是必要条件,只要修改好这次,下次就不怕出错了)

define('theme_apps', TEMPLATEPATH.'/apps');
IncludeAll( theme_apps );
/**
* include all PHP script
*/
function IncludeAll($dir){
    $dir = realpath($dir);
    if($dir){
        $files = scandir($dir);
        sort($files);
        foreach($files as $file){
            if($file == '.' || $file == '..'){
                continue;
            }elseif(preg_match('/.php$/i', $file)){
                include_once $dir.'/'.$file;
            }
        }
    }
}

然后在你的WordPress主题文件夹建立一个名为apps的文件夹,然后需要什么功能了,在这个文件夹内直接建立一个php文件就可以了,名称随意。例如我添加的迷你翻页代码:

<?php
/* Mini Pagenavi v1.0 by Willin Kan. Edit by zwwooooo */
if ( !function_exists('pagenavi') ) {
function pagenavi( $p = 5 ) { // 取当前页前后各 2 页
if ( is_singular() ) return; // 文章与插页不用
global $wp_query, $paged;
$max_page = $wp_query->max_num_pages;
if ( $max_page == 1 ) return; // 只有一页不用
if ( empty( $paged ) ) $paged = 1;
echo '<span class="pages">Page: ' . $paged . ' of ' . $max_page . ' </span> '; // 显示页数
if ( $paged > 1 ) p_link( $paged - 1, '上一页', '? Previous' );/* 如果当前页大于1就显示上一页链接 */
if ( $paged > $p + 1 ) p_link( 1, '最前页' );
if ( $paged > $p + 2 ) echo '... ';
for( $i = $paged - $p; $i <= $paged + $p; $i++ ) { // 中间页
if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<span class='page-numbers current'>{$i}</span> " : p_link( $i );
}
if ( $paged < $max_page - $p - 1 ) echo '... ';
if ( $paged < $max_page - $p ) p_link( $max_page, '最后页' );
if ( $paged < $max_page ) p_link( $paged + 1,'下一页', 'Next ?' );/* 如果当前页不是最后一页显示下一页链接 */
}
function p_link( $i, $title = '', $linktype = '' ) {
if ( $title == '' ) $title = "第 {$i} 页";
if ( $linktype == '' ) { $linktext = $i; } else { $linktext = $linktype; }
echo "<a class='page-numbers' href='", esc_html( get_pagenum_link( $i ) ), "' title='{$title}'>{$linktext}</a> ";
}
}
// -- END ----------------------------------------

不过要注意的是那些php文件要在第一行前加入一个<?php
也许你会说,如果到时我把这个新增功能php文件写错了,那不是依然会导致WordPress博客出错么?确实,但是用上面方法的好处是,如果你代码出错,我们只要把那个apps文件夹中新增的单独php文件删除就好了,而不会像原来直接在functions.php中修改,导致出错覆盖,菜鸟又不知道怎么改回去,那真是欲哭无泪啊!