Özel php script wordpress işlevleri çağırmak için nasıl

6 Cevap php

Ben WPMU yeni bir blog oluşturmak için kullanmak istediğiniz bir Php komut dosyası var. Ben sorun wpmu_create_user ve wpmu_create_blog gibi wordpress işlevlerini çağıran yaşıyorum.

Umudum bu komut satırından bir cron işi olarak çalışan ve harici db yeni blog oluşturma istekleri almak wordpress fonksiyonları kullanarak yeni bir blog oluşturabilir ve yeni blog bilgi ile db güncellemek elde etmektir.

6 Cevap

böylece gibi php komut dosyası wp-load.php dosyası (wordpress kurulum kök) dahil,

require_once("/path/to/wordpress/wp-load.php");

you will have to provide the abspath of the wp-load file, now you can use all the functions of wordpress in your php script

100 ihtiyacı ya da ölür: wordpress 3.1 için, ben wp-includes/ms-settings.php nedeniyle ana / etki alanı belirlemek zorundaydı. Yani benim komut dosyası (Ben bir ağ / MultiBlog site için kullanıyorum unutmayın) gibi bir şey görünüyor:

#!/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; 
?>

Aşağıdaki ben kullanıyorum kodu:


<?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);

?>

Bu çalışması gerekir:

require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

yani php komut aynı sunucuda ve WP kök üzerinde yüklü olduğunda. Çoğu durumda olduğu gibi.

require_once ('...... / / / wp-load.php');

I think you have to add this line before any usage of wordpress function in your custom file. and make sure i have add ../ 3 times as per my wordpress installation structure.It's depends on your structure checks manually. ex. if your custom file is inside your themes/yourtheme/custom.php then above code will works perfectly and if not then add ../ or remove one or more ../ as per your path.

WordPress tamamen kesilmiş - bir yetim page olduğu için insanlar harici bir komut kullanmalısınız ana nedenlerinden biri TinyMCE stilleri içindir.

Yani (as described here), bu gibi özel CSS sayfa ayarlayabilirsiniz PHP ile kontrollü özel stiller isterseniz:

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
 define('WP_USE_THEMES', true);

 /** Loads the WordPress Environment and Template */
 require(  dirname(dirname(dirname(dirname(dirname(dirname(dirname( __FILE__ ))))))) . '/wp-load.php' );

/**
 * Create CSS Output for Tiny MCE
 */
 function create_tiny_mce_page(){   

   //Create hook which outputs css to page
   do_action( 'my_custom_tinymce_css' );

 }
 add_action('shutdown', 'create_tiny_mce_page' );

** Yukarıda "dizinadı" s sayısı özel PHP dosyası uzak WP kökünden olan dizinlerinin sayısına eşit olacağını unutmayın.

Unutulmaması gereken bir diğer şey, size özel komut işlevleri yayınlanmaya başlar zaman, WordPress Tüm filtreleri "kapatma" dışında çalıştırmak edilmiş olmasıdır.