وردپرس قسمت پنجاه و ششم

وردپرس قسمت پنجاه و ششم

//get a list of all public site IDs
$args = array (
'public' => '1'
);
$sites = get_sites( $args );
if ( is_array( $sites ) ) {
echo '<p>';
echo 'Site to display recent posts';
echo '<select name="' .$this->get_field_name('siteid')
.'" class="widefat" >';
//loop through the blog IDs
foreach ($sites as $site) {
//display each site as an option
echo '<option value="' .$site->blog_id. '" '
.selected( $site->blog_id, $siteid )
. '>' .get_blog_details( $site->blog_id )->blogname
. '</option>';
}
echo '</select>';
echo '</p>';
}
//number to display textfield widget option
echo '<p>Number to display: <input class="widefat" name="'
.$this->get_field_name( 'disp_number' ). '" type="text"
value="' .esc_attr( $disp_number ). '"/></p>';
}
//save the widget settings
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = strip_tags( $new_instance['title'] );
$instance['siteid'] = absint( $new_instance['siteid'] );
$instance['disp_number'] =
absint( $new_instance['disp_number'] );
return $instance;
}
//display the widget
function widget( $args, $instance ) {
extract( $args );
echo $before_widget;
//load the widget options
$title = apply_filters( 'widget_title', $instance['title'] );
$siteid = empty( $instance['siteid'] ) ? 1 :
$instance['siteid'];
$disp_number = empty( $instance['disp_number'] ) ? 5 :
$instance['disp_number'];
//display the widget title
if ( !empty( $title ) ) { echo $before_title . $title
. $after_title; };
echo '<ul>';
//switch to site saved
switch_to_blog( absint( $siteid ) );
//create a custom loop
$recent_posts = new WP_Query();
$recent_posts->query( 'posts_per_page='
.absint( $disp_number ) );
//start the custom Loop
while ( $recent_posts->have_posts() ) :
$recent_posts->the_post();
//display the recent post title with link
echo '<li><a href="' .get_permalink(). '">'
.get_the_title() .'</a></li>';
endwhile;
//restore the current site
restore_current_blog();
echo '</ul>';
echo $after_widget;
}
}

ایجاد یک سایت جدید

شما به راحتی می توانید در داشبورد وردپرس سایت های جدیدی را در شبکه Multisite خود ایجاد کنید. اما اگر بخواهید یک سایت جدید در افزونه خود ایجاد کنید چه؟ مثل همیشه، یک تابع برای آن وجود دارد، و به نام wpmu_create_blog().
<?php wpmu_create_blog( $domain, $path, $title,
$user_id, $meta, $site_id); ?>
این تابع شش پارامتر را می پذیرد.
➤➤ $domain: دامنه سایت جدید.
➤➤ $path: مسیر سایت جدید. بسته به تنظیماتی که استفاده می کنید، این زیر شاخه یا نام زیر دامنه است.
➤➤ $title: عنوان سایت جدید.
➤➤ $user_id: شناسه کاربری حساب کاربری که مدیر سایت خواهد بود.
➤➤ $meta: اطلاعات متا اضافی.
➤➤ $site_id: شناسه وبلاگ سایتی که قرار است ایجاد شود.
تنها پارامترهای مورد نیاز چهار پارامتر اول هستند. دو مورد آخر اختیاری هستند اگر سایت جدید با موفقیت ایجاد شود، تابع شناسه وبلاگ جدید ایجاد شده را برمی گرداند. این تابع تمام کارهای سنگین ایجاد جداول پایگاه داده، افزودن محتوای پیش فرض، تخصیص هر گونه نقش کاربر و غیره را انجام می دهد. همانطور که احتمالا متوجه شدید، تابع با wpmu_ شروع می شود. بسیاری از توابع Multisite زمانی بخشی از WordPress MU بودند، قبل از ادغام دو پایه کد در WordPress 3.0. این نام توابع می‌تواند حاوی wpmu یا وبلاگ باشد تا از سازگاری به عقب پشتیبانی کند.
به عنوان مثال، افزونه‌ای ایجاد کنید که کاربران را قادر می‌سازد تا سایت‌هایی را در وردپرس Multisite ایجاد کنند. ابتدا یک منوی سطح بالای سفارشی برای صفحه افزونه ایجاد کنید
<?php
add_action( 'admin_menu', 'pdev_multisite_create_menu' );
function pdev_multisite_create_menu() {
//create custom top-level menu
add_menu_page( 'Multisite Create Site Page',
'Multisite Create Site',
'manage_options', 'pdev-network-create',
'pdev_multisite_create_sites_page' );
}
?>
اکنون تابعی را ایجاد کنید تا فرمی برای ایجاد یک سایت جدید نمایش دهد.