All Items » Hemsida » Bug #5876
Future
Automatisera inlägg
ID: 5876Status: EvaluationVersion: N/AReport 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
        );
     }
}
 
======================================
 
Suspended since 1/6
 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 00:05
 
================================================
 
Från och med 29 april testas koden skarpt på vallentunadans.se, uppdateringen sker dagligen kl 00:05
 
Följande tillägg, eller motsvarande, är nödvändiga för att få koden att fungera:

  – ACF, Advance Custom Fields. För att skapa fälten Admin Code, Unique ID och Sequence samt skapa inläggstypen Sekvenstexter

  – WP Crontrol, för att schemalägga när funktionen add_highlights ska köras (dagligen 00:05)

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

1/6

Uppdateringen sker nu kl 02:05 för att hinna fullfölja radering av inlägg som sker 00:00

Automatiseringen är ändrad så att inga bilder längre laddas ned i vårt mediabibliotek. Bilderna hämtas ”on the fly” via länken till Dans.se. För att kunna använda externa URL som Utvald Bild används tillägget Featured Images From URL (FIFU)

Följande kod sätter bild till tillägget

fifu_dev_set_image($post_id,$imgurl);