在wordpress中运行php应用程序

时间:2016-02-03 22:52:33

标签: php html mysql css wordpress

所以我拥有一家电脑维修店。我们有一个我们真正喜欢的销售点软件。有一个&#34;检查维修状态&#34;文件夹你可以在另一个网站上安装这个应用程序,我喜欢它的工作方式,但希望将它(deps.php,index.php,headerstatus.php,footerstatus.php,common.php)全部合并到一个文件中,这样我就可以在WordPress页面的post部分执行该php删除 <? php {php _code here} ?>标记,并使用wordpress插件替换为[insert_php] {php code here} [/insert_php]&#34;插入php&#34;只有这两个标签之间的代码才会在已发布的WordPress页面(inphp)中执行。

问题是它无法从那里到达另一个文件,它必须包含所有文件。由于wordpress页面不是物理位置而是来自DB的信息。从页面运行php会很好,所以我可以轻松地为box和div创建几个小的自定义类大小,然后在php中删除所有以前的自定义类和样式,并允许我们主题中的默认类/样式采取他们的我不能使用我们主题的默认css定义的地方和自定义样式/类(可能是内联的)。

那么我们可以使用命令来告诉索引从同一文件中引用这些函数,参数或命令的位置,而不是引用单独的文件吗?

require("deps.php"); require("headerstatus.php"); require("common.php");
require_once("footerstatus.php");
function showstatus() { require("deps.php"); require("headerstatus.php"); require("common.php");

因此,如果无法删除require,或使用require或其他命令指向其位置的本地化函数,行或路径。要么(注意我说可能,这段代码不需要完美,它需要从单个脚本运行并运行。我理解人们不喜欢推荐非标准的编程答案。)

从common,deps和php文件重写所需的每个项目以反映其寻找的数据类型需要做多少工作? 或者更有意义的是重写索引中的代码以更好地使用本地化函数?

问题是我需要这个工作,并且在网上找不到通常不是好兆头的例子。我对所有建议都持开放态度! 只是在这里抛出想法,如果你提出建议,请举例。

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是保留要插入的应用程序的文件夹结构。这种方式路径应该仍然有效,它们是相对于文件的,所以应该仍然可以工作。

所以 1.在主题中创建一个名为“repairstatus”的新文件夹

  1. 将所有文件上传到 - index.php等

  2. 将以下代码放在主题functions.php中(或创建子主题

    //1. add a wp query variable to redirect to
    add_action('query_vars','plugin_set_query_var');
    function plugin_set_query_var($vars) {
        array_push($vars, 'is_repair_page'); // ref url redirected to in add rewrite rule
    
        return $vars;
    }
    
    
    //2. Create a redirect
    add_action('init', 'plugin_add_rewrite_rule');
    function plugin_add_rewrite_rule(){
        add_rewrite_rule('^repairstatus$','index.php?is_repair_page=1','top');
    
        //flush the rewrite rules, should be in a plugin activation hook, i.e only run once...
    
        //flush_rewrite_rules();  
    }
    
    //3.return the file we want...
    add_filter('template_include', 'plugin_include_template');
    function plugin_include_template($template){
    
    
        // see above 2 functions..
        if(get_query_var('is_repair_page')){
            //path to your template file
            $new_template = get_stylesheet_directory().'/repairstatus/index.php';
            if(file_exists($new_template)){
                $template = $new_template;
            } 
            // else needed? up to you maybe 404?
        }    
    
        return $template;    
    
    }
    
  3. 现在导航到管理信息中心的设置,然后点击永久链接。只需点击保存按钮即可。在这个阶段测试,http://accuratepctech.com/repairstatus/应该打开index.php(目前看起来很有趣)..

    现在修改index.php文件...我们需要做的就是注释掉headertatus和footerstatus需要,它们会打破html输出...

    我们可以使用get_header()加载wp网站的标头,该标头将加载css,导航等,并为页脚元素加载get_footer()

        if (array_key_exists('func',$_REQUEST)) {
    
        $func = $_REQUEST['func'];
    
        } else {
    
        $func = "";
    
        }
    
    
    
    
    
        //loads header and related 
        get_header();
    
    
        function repairlookup() {
    
        require("deps.php");
    
        //require("headerstatus.php"); -->not needed, its only html
    
        require("common.php");
    
        //etc////////////
    
    
        //find require("footerstatus.php") and remove
    
        }
    
        get_footer();
    

    现在你应该有一个wp查看页面,index.php代码将被取消样式。您可以使用

    添加css
    <link rel="stylesheet" type="text/css" href="style.css">
    

    (注意这是html,关闭php标签来使用它)但是id建议你打开这个文件并复制到你主题中的style.css,然后你可以改变css以适应。

    请注意,这可能会按原样运行,但可能存在错误,因此请仔细检查操作。我将推荐你google wpdb并更新以使用WP数据库功能(如果你愿意,你可以创建单独的表),否则你有2个数据库连接。这不会对网站的性能有好处,它可以加载1个用户,但3/4并发用户将开始减慢一切...