<?php
/*
Plugin Name: Draft to Post
Plugin URI: http://www.yakupgovler.com
Description: Taslak yazılarınızı belirli aralıklarla yayımlar.
Author: Yakup Gövler
Version: 1.0
Author URI: http://www.yakupgovler.com
*/
function yg_d2p_options_page() {
add_options_page('Draft to Publish Settings', 'Draft to Publish', 10, __FILE__, 'yg_d2p_options');
}
add_action('admin_menu', 'yg_d2p_options_page');
function yg_is_d2p_activated () {
$crons = _get_cron_array();
if ( !empty($crons) ) {
foreach ( $crons as $timestamp => $cron ) {
if (isset($cron['yg_publish'])) {
return true;
}
}
}
return false;
}
function yg_d2p_save_settings() {
if ($_POST['submit']) {
$activate = (bool) ($_POST['activate']);
$pt = esc_attr($_POST['post_type']);
$error = false;
if (!($pt=='draft' || $pt=='pending')) $error = true;
$delay = (int) $_POST['delay'];
if (!($delay==999 || $delay >= 5 && $delay <= 300)) $error=true;
$cats = str_replace(' ', '', esc_attr($_POST['cats']));
$order = esc_attr($_POST['order']);
if (!($order == 'ASC' || $order == 'DESC' || $order == 'RAND')) $error=true;
if (!$error) {
$options = array('activate'=>$activate, 'delay'=>$delay, 'post_type'=>$pt, 'cats'=>$cats, 'order'=>$order);
if (!update_option('yg_d2p_options', $options)) add_option('yg_d2p_options', $options);
if ($delay == 999) $delay = mt_rand(60, 180);
wp_clear_scheduled_hook('yg_publish');
if ($activate) wp_schedule_single_event(time() + $delay*60, 'yg_publish', array());
?>
<div id="message" class="updated fade"><p><strong>Ayarlar kaydedildi. <?php if ($activate) echo "Eklenti Aktifleştirildi!"; else echo "Eklenti Pasifleştirildi!"; ?></strong></p></div>
<?php
}
}
}
function yg_d2p_options() {
if ($_POST['submit']) {
check_admin_referer( 'd2p_options' );
yg_d2p_save_settings();
}
$options = get_option('yg_d2p_options');
$activate = (bool) $options['activate'];
$delay = (int) $options['delay'];
$post_type = esc_attr($options['post_type']);
$cats = esc_attr($options['cats']);
$order = esc_attr($options['order']);
$delays = array(5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 180, 240, 300);
?>
<div class="wrap">
<div id="icon-edit-pages" class="icon32"><br /></div>
<h2>Draft to Publish Settings</h2>
<form method="post" action="">
<?php wp_nonce_field('d2p_options'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">
Eklentinin Şu anki Durumu</th>
<td><?php
if (yg_is_d2p_activated ()) echo "<strong>Aktif</strong>"; else echo "<strong>Pasif</strong>";
?>
</td>
</tr>
<tr valign="top">
<th scope="row">
<label for="post_type">Eklentiyi Aktifleştir</label></th>
<td><input type="checkbox" name="activate" id="activate" value="1" <?php checked( $activate ); ?> />
</td>
</tr>
<tr valign="top">
<th scope="row">
<label for="post_type">Yayımlanacak yazı türü</label></th>
<td><select name="post_type" id="post_type">
<option value="draft" <?php if ($post_type=='draft') echo " selected = 'selected'";?>><?php esc_attr_e('Draft') ?></option>
<option value="pending" <?php if ($post_type=='pending') echo " selected = 'selected'";?>><?php esc_attr_e('Kontrol Bekleyen') ?></option>
</select>
</td>
</tr>
<tr valign="top">
<th scope="row">
<label for="delay">Yazıları şu gecikmeyle yayımla</label></th>
<td>
<select name="delay" id="delay">
<?php
foreach ($delays as $d) {
$selected = '';
if ($delay == $d) $selected = " selected='selected'";
echo '<option value="' . $d . '" '. $selected . '>' . $d . '</option>'."\n";
}
?>
<option value="999" <?php if ($delay==999) echo " selected='selected'"?>><?php esc_attr_e('Random') ?> *</option>
</select> dakika
<br />
<small>(* Rastgele seçiminde gecikme en az 60, en fazla 180 dakikadır.)</small>
</td>
</tr>
<tr valign="top">
<th scope="row">
<label for="cats">Yazıların alınacağı kategoriler </label></th>
<td><input type="text" name="cats" id="cats" value="<?php echo $cats;?>" /><br />
<small>(Kategorilerin ID'lerini virgül ile ayırarak yazınız. Örn: 5,8,17)</small>
</td>
</tr>
<tr valign="top">
<th scope="row">
<label for="order">Yazıları yayımlama sırası</label></th>
<td>
<select name="order" id="order">
<option value="ASC"<?php if ($order=='ASC') echo " selected='selected'"?>>Eskiden Yeniye Doğru</option>
<option value="DESC"<?php if ($order=='DESC') echo " selected='selected'"?>>Yeniden Eskiye Doğru</option>
<option value="RAND"<?php if ($order=='RAND') echo " selected='selected'"?>>Rastgele</option>
</select><br />
<small>(Sıralamalar ID tabanlı olup, veritabanına kayıt sırası takip edilir. Yazı tarihi gözardı edilir.)</small>
</td>
</tr>
</table>
<input type="submit" name="submit" class="button-primary" id="delay" value="<?php esc_attr_e('Save Changes') ?>" />
</form>
<?php
}
function yg_draft_to_publish($postt='') {
global $wpdb;
$options = get_option('yg_d2p_options');
$activate = (bool) $options['activate'];
$delay = (int) $options['delay'];
if ($delay == 999) $delay = mt_rand(60, 180);
$post_type = esc_attr($options['post_type']);
if ($post_type != 'pending') $post_type = 'draft';
$cats = esc_attr($options['cats']);
$order = esc_attr($options['order']);
if ($order == 'RAND') {$orderby = 'rand'; $order='';}else{ $orderby = 'ID';}
if ($order != '' && $order != 'DESC') $order = 'ASC';
$args = array(
'category' => $cats,
'post_type' => 'post',
'post_status' => $post_type,
'numberposts' => 1,
'orderby' =>$orderby,
'order' => $order
);
$post = get_posts($args);
if ($post) {
//$post = $wpdb->get_results("select * FROM $wpdb->posts WHERE post_status='draft' AND post_type='post' ORDER BY ID ASC LIMIT 1");
$post_id = $post[0]->ID;
$postarr = array('ID' => $post_id, 'post_status' => 'publish', 'post_date' => current_time('mysql'), 'post_date_gmt' => current_time('mysql', 1));
wp_update_post($postarr);
wp_schedule_single_event(time() + $delay * 60, 'yg_publish', array());
} /*else{
add_action('admin_notices', 'yg_d2p_notice');
}*/
}
/*
function yg_d2p_notice() {
echo '<div class="error"><p>';
echo '<strong>Uyarı:</strong>: Yayımlanacak yazı bulunamadığından, Draft to Publish eklentisi<br />tarafından yazıların yayımlanması durduruldu.';
echo '</p></div>';
}
*/
add_action('yg_publish', 'yg_draft_to_publish', 10, 1);
register_activation_hook(__FILE__,'yg_draft2publish_install');
register_deactivation_hook(__FILE__,'yg_draft2publish_uninstall');
// Install plugin
function yg_draft2publish_install() {
$options = array('activate'=>0, 'delay'=>30, 'post_type'=>'draft', 'cats'=>'', 'order'=>'ASC');
add_option('yg_d2p_options', $options);
}
// Uninstall plugin
function yg_draft2publish_uninstall() {
//wp_clear_scheduled_hook('yg_publish');
}
?>Bunun çalışması lazım hocam bir dener misin? Ayarlarına tam giremedim meşgulum biraz ama pasif gözükse bile çalışıyor olması lazım o yüzden öyle gözükmesine pek bakmayın ama ilk başta aktifleştirin.