tema - Cómo llamar a las funciones de WordPress en script PHP personalizado
shortcode wordpress php (7)
A continuación está el código que estoy usando:
<?PHP
require_once (''/path/to/wordpress/wp-load.php'');
require_once (''/path/to/wordpress/wp-blog-header.php'');
require_once (''/path/to/wordpress/wp-includes/registration.php'');
do_action(''wpmuadminedit'', '''');
//Code to Connect and Select the external database
//Code to Connect to the external DB and get the new order details:
NewBlogName=$name and AdminEmail=$email
if ( !email_exists($email) )
{
// email does exist, create a new user
$name = create_name_from_email($email);
$password = "use a default password";
$user_id=wpmu_create_user($name, $password, $email);
create_blog($email, $title, $user_id, $password);
}
else
{
// user exists, create new blog
$user_id=email_exists($email);
$password = "use existing wordpress password";
create_blog($email, $title, $user_id, $password);
}
function create_name_from_email ($email) {
preg_match(''/[^@]+)@/'',$email,$matches);
$name = $matches[1];
return $name;
}
//Creates a new blog, expects user to already exist.
function create_blog($email, $title, $user_id, $password)
{
//Code to Update external DB that the order is in process
$public = array("public" => 1);
if (constant(''VHOST'') == ''yes'')
{
$newdomain = $domain . "." . $current_site->domain;
$path = $base;
}
else
{
$newdomain = $current_site->domain; $path = $base . $domain . ''/'';
}
$domain = strtolower($domain);
$newdomain = strtolower($newdomain);
$path = strtolower($path);
$meta = apply_filters(''signup_create_blog_meta'', array(''lang_id'' => 1, $public));
$meta = apply_filters("add_singup_meta", $meta);
wpmu_create_blog($newdomain, $path, $title, $user_id , $meta, $current_site->id);
do_action(''wpmu_activate_blog'', $blog_id, $user_id, $password, $title, $meta);
// Update external DB with BlogUrl, NewBlogName, AdminPassword,
OrderStatus=Complete.
mysql_close($con);
?>
Tengo un script Php que quiero usar para crear un nuevo blog en WPMU. Tengo problemas para llamar a funciones de WordPress como wpmu_create_user y wpmu_create_blog .
Mi esperanza es hacer que este script se ejecute como un trabajo cron desde la línea de comando y recoger nuevas solicitudes de creación de blog desde un DB externo, crear un blog nuevo usando las funciones de WordPress y actualizar el DB con nueva información del blog.
Esto debería funcionar:
require_once($_SERVER[''DOCUMENT_ROOT''].''/wp-load.php'');
es decir, cuando la secuencia de comandos php está en el mismo servidor y WP está instalado en la raíz. Como la mayoría de los casos son
Para wordpress 3.1, tuve que especificar el host / dominio porque wp-includes / ms-settings.php: 100 lo necesita o se muere. Así que mi script se ve algo así como (tenga en cuenta que lo estoy usando para un sitio de red / multibuego):
#!/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;
?>
Tengo una solución universal que funcionará en cualquier archivo php dentro wp-content
carpeta wp-content
sin ningún ajuste o necesidad de saber qué es misterioso ''path/to/wordpress''
require_once( explode( "wp-content" , __FILE__ )[0] . "wp-load.php" );
Simplemente sube automáticamente a la raíz de wordpress y carga wp-load.php
Puede pegarlo en cualquier lugar, sin importar si su plugin o archivo de tema funcionará.
Creo que cosas como ../../../..
ven muy mal y cuando modificas la estructura de tus carpetas de tema / complemento puedes volverte loco.
Nota : esta solución asume que no cambió el nombre de su carpeta wp-content
.
incluya el archivo wp-load.php (en la raíz de su instalación de wordpress) en su archivo de script php como tal,
require_once("/path/to/wordpress/wp-load.php");
Tendrás que proporcionar el abspath del archivo wp-load, ahora puedes usar todas las funciones de wordpress en tu script php
wordpress usa una función phpass -
Esto funcionó para mí, ya que tenía una contraseña y el hash en una tabla (usuarios de wp migrados) y tenía que encontrar la forma de verificar los detalles de inicio de sesión.
Agarra esta descarga aquí - https://github.com/sunnysingh/phpass-starter
Todo lo que necesitas es esta función básica para verificar una contraseña de texto a un hash de WordPress:
<?php
require_once( "PasswordHash.php" );
$hasher = new PasswordHash(8, false);
// Check that the password is correct
$check = $hasher->CheckPassword($password, $stored_hash);
if ($check) {
// password good
} else {
// password wrong
}
?>
Todos los créditos a Sunny Singh!
require_once(''../../../wp-load.php'');
Creo que debes agregar esta línea antes de utilizar la función wordpress en tu archivo personalizado. y asegúrate de haber agregado ../ 3 veces según mi estructura de instalación de WordPress. Depende de tus controles de estructura manualmente. ex. si su archivo personalizado está dentro de sus temas / yourtheme / custom.php, entonces el código anterior funcionará perfectamente y si no, agregue ../ o elimine uno o más ../ según su ruta.