Automatisera påminnelser

Back » Bug #5876
Future
Automatisera påminnelser
ID: 5876Status: Analyze   Report Date: 3rd April 2024Product: Hemsida
ReporterHåkan Palm
Assignee
Description

Automatisera påminnelser typ ”Anmälan öppnar…” och ”Kom ihåg att anmäla dig…” med json data från Dans.se

================================

Grunden för att skapa en post med PHP ser ut så här:

// Create post object
$my_post = array(
'post_title' => wp_strip_all_tags( $_POST['post_title'] ),
'post_content' => $_POST['post_content'],
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array( 8,39 )
);

// Insert the post into the database
wp_insert_post( $my_post );

Dock måste vi lista ut hur ’publishing date’ och future tillägget fungerar för att kunna spara dessa parametrar i databasen

=================================

Följande kod lägger till en post som publiseras den 20/4 och skapar en ”future action” delete 2024-06-25 10:00:00

function add_post($title, $content){
    $my_post = array(
        ’post_title’    => wp_strip_all_tags( $title ),
        ’post_content’  => $content,
        ’post_status’   => ’publish’,
        ’post_author’   => 1,
        ’post_category’ => array( 25 ),
       ’post_date’ => ’2024-04-20’,
    );
 
    // Insert the post into the database
    $post_id = wp_insert_post( $my_post );
 
    if (defined(’PUBLISHPRESS_FUTURE_LOADED’)) {
        /**
        * Expiration types:
        *
        *  – draft
        *  – delete
        *  – trash
        *  – private
        *  – stick
        *  – unstick
        *  – category
        *  – category-add
        *  – category-remove
        *
        *  For ”category”, add additional attributes:
        *   ’category’ => $categoryId,
        *   ’categoryTaxonomy’ => $taxonomyName
        */
        $options   = [
            ’expireType’ => ’delete’,
            ’id’         => $post_id,
        ];
        $timestamp = date(’U’, strtotime(’2024-06-25 10:00:00’));
        do_action(
            ’publishpressfuture_schedule_expiration’,
            $post_id,
           $timestamp,
           $options
        );
     }
}
 
======================================
 
 Följande tillägg i koden lägger till en Utvald bild till inlägget om bilden inte redan finns i mediabiblioteket laddas bilden upp
 
$desc    = ”Image inserted from Dans.se”;
//Search the database for image duplicates
global $wpdb;
$query = ”SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value='”.$imgurl.”’”;
$image_id = $wpdb->get_var($query);
 
//If image dont exicst in Media Library then upload
//else attache image from Media Library
    if($image_id == 0){
        //upload image
         $image = media_sideload_image( $imgurl, $post_id, $desc,’id’ );
        //attache image to current post
        set_post_thumbnail( $post_id, $image );
}else{
        set_post_thumbnail($post_id, $image_id);
}
=======================================
 
Följande kod skapar en ny rubrik och sätter publish date och future action date efter hur synlighetsdatumen i Dans.se förhåller sig till dagens datum
 
if(time() >= $eventStartDate – week){
    $publishDate = date(’Y-m-d’,time());
    $futureActionDate = date(’Y-m-d’,$eventStartDate);
    $match = preg_match(’/[^\d+\/\d+\W\s].*/’, $event[’name’], $title);
    $title = ”Snart är det dags för ”.$title[0];
//#2
}elseif(time() > $startDirectReg – week && time() < $startDIrectReg && $startDirectReg <> 0){
     $publishDate = date(’Y-m-d’,time());
     $futureActionDate = date(’Y-m-d’,$startDirectReg);
     $match = preg_match(’/[^\d+\/\d+\W\s].*/’, $event[’name’], $title);
     $title = date(’j/n’,$startDirectReg).” öppnar anmälan till ”.$title[0];
//#3
}elseif(time() > $startDirectReg && time() < $eventStartDate – week && $startDirectReg <> 0){
     $publishDate = date(’Y-m-d’,time());
     $futureActionDate = date(’Y-m-d’,$eventStartDate – week);
     $match = preg_match(’/[^\d+\/\d+\W\s].*/’, $event[’name’], $title);
     $title = ”OBS! Nu är anmälan öppen till ”.$title[0];
//4
}elseif(time() > $eventStartDate){
     $publishDate = date(’Y-m-d’,time());
     $futureActionDate = date(’Y-m-d’,$eventStartDate);
     $title = $event[’name’];
//#0
}else{
     $publishDate = date(’Y-m-d’,time());
     if($startDirectReg == 0){
        $futureActionDate = date(’Y-m-d’,$eventStartDate – week);
    }else{
        $futureActionDate = date(’Y-m-d’,$startDirectReg – week);
    }
    $title = $event[’name’];
} 
 
================================================
 
Från och med 14/4 testas koden skarpt på familjen-palm.se, uppdateringen sker dagligen kl 05:00