如何从Artisan Command访问WordPress功能

时间:2015-09-11 17:54:54

标签: php wordpress laravel laravel-5 artisan

我跟着这个tutorial使用WordPress和Laravel,我能够从我的Laravel控制器访问WordPress功能。

基本示例

OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\MyFile.xlsx;Extended Properties='Excel 12.0 Xml;HDR=Yes'"))

这有效,而且我已经能够访问到目前为止我尝试过的所有WordPress方法。

问题

我遇到的困难是当我创建并注册一个新的artisan命令并尝试从那里访问那些相同的方法时。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Corcel;
class WordPressController extends Controller
{
    public function getIndex ()
    {
        return redirect('/');
         $posts = get_posts([
             'posts_per_page' => 20,
             'order' => 'ASC',
             'orderby' => 'post_title',
             ]);

        return $posts;
    }

据我所知,Laravel 5通过index.php文件导入WordPress方法的方式存在问题。我想我需要做一些自动加载的事情,但我迷失了。我试过重复我的artisan命令文件构造函数中index.php文件中的步骤。

我能想到的另一个(hacky)事情是将控制器导入我的工匠命令,但我真的不愿意这样做。

更新

接受的答案是要走的路。你会遇到一些事情。您将收到与未在客户端中设置的<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Http\Request; use App\Http\Requests; class WPTags extends Command { protected $signature = 'wp:tags'; protected $description = 'Output tags from WordPress'; public function __construct() { parent::__construct(); } public function handle() { $tags = get_tags([ 'number'=>20, 'offset' => 10, 'hide_empty' => true, ]); return $tags; } 变量相关的一些错误。这是我用来抑制/处理这些错误的代码。

它并不完美,但对于本地开发来说,至少应该让你富有成效。

$_SERVER

1 个答案:

答案 0 :(得分:1)

我认为这部分

将Laravel连接到Wordpress

var myApp= angular.module('MyApp', [
    'ngRoute',
    'ngAnimate',
    'ngMaterial'
]);
myApp.config(function ($routeProvider) {

$routeProvider
            .when('/test', { /////////////////////////THIS IS WORKING
                template : '<span> AHEY </span>',
                controller  : 'testController'
            })
            .when('/LoginPage', {/////////////////////////THIS IS NOT WORKING
                templateUrl : 'LoginPage.html',
                controller  : 'loginController'
            })
});

更好地放在<!DOCTYPE html> <html ng-app="MyApp"> <head> ... </head> <title>My App</title> <body ng-controller="mainController"> <div id="header" layout="row" > </div> <div ng-view></div> <script> .... </script> </body> </html> 中,因为每次调用laravel时都会打开此文件:web,console等。这没有经过测试,但我认为应该可行。

另一个,我认为更好的方法是将此文件包含在作曲家自动加载器中,但是你无法定义常量。