如何在自定义php脚本中调用wordpress函数

sid*_*sri 33 php blogs wpmu

我有一个Php脚本,我想用它在WPMU中创建一个新的博客.我无法调用像wpmu_create_userwpmu_create_blog这样的wordpress函数.

我希望从命令行将此脚本作为cron作业运行,从外部数据库中获取新的博客创建请求,使用wordpress函数创建新博客并使用新的博客信息更新数据库.

Pra*_*eka 41

在php脚本文件中包含wp-load.php文件(在wordpress安装的根目录中),如下所示,

require_once("/path/to/wordpress/wp-load.php");
Run Code Online (Sandbox Code Playgroud)

你将不得不提供wp-load文件的abspath,现在你可以在php脚本中使用wordpress的所有功能了


pie*_*e6k 29

我有通用的解决方案,可以在文件wp-content夹内的任何PHP文件中工作,无需任何调整或需要知​​道什么是神秘的'path/to/wordpress'

require_once(explode("wp-content", __FILE__)[0] . "wp-load.php");
Run Code Online (Sandbox Code Playgroud)

它只是自动上升到wordpress的根目录并加载wp-load.php

你可以随便粘贴它,无论它的插件或主题文件是否有效.

我认为../../../..看起来非常糟糕的东西,当你修改你的主题/插件文件夹的结构时,你会发疯.


注意:此解决方案假定您重命名wp-content文件夹.

  • 这确实假定您尚未重命名wp-content文件夹。好答案 (2认同)
  • 没错,我将在此答案中添加注释。 (2认同)

小智 15

对于wordpress 3.1,我必须指定主机/域,因为wp-includes/ms-settings.php:100需要它或它死掉.所以我的脚本看起来像(注意我在网络/多博客网站上使用它):

#!/usr/bin/php -q

<?php 
#for multi-blog only
$blog_id = 1;

#specify host or domain (needed for wp-includes/ms-settings.php:100)
$_SERVER[ 'HTTP_HOST' ] = 'localhost';

#location of wp-load.php so we have access to database and $wpdb object
$wp_load_loc = "/path/to/wordpress/wp-load.php";

require_once($wp_load_loc);

#for multi-blog only
switch_to_blog($blog_id);

#test to make sure we can access database
echo $wpdb->prefix; 
?>
Run Code Online (Sandbox Code Playgroud)


小智 5

这应该工作:

require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
Run Code Online (Sandbox Code Playgroud)

即当php脚本在同一服务器上并且WP安装在根目录上时。像大多数情况一样。