Задание Cron - перемещение данных между базами данных - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть веб-сайт членства в Wordpress, который построен с пользовательским типом записи, называемым 'members'.

По многим причинам мы использовали задание cron для запуска и заполнения этих полей CPT данными из отдельная база данных (для компании было невозможно использовать стандартную базу данных WP для хранения своих данных.

База данных начинается в MS Access, экспортируется в отдельную таблицу внутри нашей базы данных WP, а затем в cron. job извлекает данные из этой базы данных и добавляет их в базу данных CPT.

Внутри документа задания cron у нас есть такие строки:

update_field( 'memberimage', $members->webpic, $post_id );
update_field( 'description', $members->description, $post_id );
update_field( 'phone_number', $members->telno, $post_id );
update_field( 'email_address', $members->email, $post_id );
update_field( 'website_address', $members->web, $post_id );

, которые, очевидно, получают данные из полей в базу данных и добавьте ее в поля, которые мы создали в CPT et c. et c.

Для каждого члена в бэкэнде у меня есть выпадающий список, созданный с расширенными настраиваемыми полями (имя поля: gold_or_silver_member с вариантами выбора золота или серебра), который помечает их как золото серебряного элемента.

Серебро по умолчанию и, если они золотые, все виды условные вещи показывают, что на их странице каталога больше возможностей.

В базе данных, из которой мы извлекаем, столбец, который выглядит после этого, называется webtier, поэтому на уровне базы данных пользователь базы данных добавляет число 2 если в поле указан член, то это серебро, а в поле номер 3, если этот элемент - золото.

Я пытаюсь получить это число из базы данных, как описано выше, и вывести его, чтобы получить либо золото или серебро внутри АКФ для каждого члена.

У нас уже есть эта строка:

update_field( 'gold_or_silver_member', 'Silver', $post_id );

, которая, по-моему, делает все члены серебряными по умолчанию, поэтому логика c, я думаю, должна только сказать:

если число в поле базы данных, webtier равно 3, тогда измените поле ACF на золото

Я думаю, в любом случае ...

Я немного застрял, чтобы быть честным, я забираю это у кого-то другого, кого я не могу достать из-за текущей ситуации, поэтому мне было поручено выяснить это ... Может кто-нибудь помочь и посоветовать мне?

Полный файл cronjob. php:

<?php
include('wp-config.php');

global $wpdb;
$taxonomy="business_sector";
$members = $wpdb->get_results("SELECT dep.*  FROM directory_enteries_partnership as dep where status=0 ");
$i=1;
foreach($members as $members){
    //echo $members->webcat;
    //echo "<br>";
    $category = $wpdb->get_row("SELECT *  FROM directory_categories_partnership as dcp where maincategory=$members->webcat");

    //echo "$i";
    //echo "<br>";
    //$i++;
    //echo "<pre>";
    //print_r($category);
    $term = get_term_by('name',$category->description,$taxonomy);
//  echo "<pre>";
    //print_r($term);
//  print_r($members);
//  //die;
    $address =  $members->address1.' '.$members->address2.' '.$members->town.' '.$members->postcode;

$my_post = array(
     'post_title' => $members->orgname,
     'post_type'  => 'members',
     'post_status' => 'publish',
     'post_author' => 1,
     'post_category' => array( $term->term_id ),

  );

// Insert the post into the database
 $post_id = wp_insert_post( $my_post );
 wp_set_post_terms($post_id,$term->term_id,$taxonomy);
 update_field( 'logoimage', $members->weblogo, $post_id );
update_field( 'address', $address, $post_id );
update_field( 'memberimage', $members->webpic, $post_id );
update_field( 'description', $members->description, $post_id );
update_field( 'phone_number', $members->telno, $post_id );
update_field( 'email_address', $members->email, $post_id );
update_field( 'website_address', $members->web, $post_id );
update_field( 'show_as_new_member', 'No', $post_id );
update_field( 'show_as_featured_member', 'No', $post_id );
update_field( 'gold_or_silver_member', 'Silver', $post_id );
$field_key = "social_media_accounts";
$value = array(
    array(
        "social_network_name"   => "Facebook",
        "url"   => $members->facebook
    ),
    array(
        "social_network_name"   => "Twitter",
        "url"   => $members->twitter
    )
);
update_field( $field_key, $value, $post_id );
$wpdb->update( 
    'directory_enteries_partnership', 
    array( 
        'status' => 1
    ), 
    array( 'id' => $members->id )
);
// die;
}
?>

Любая помощь или совет очень ценятся !! Спасибо за поиск.

1 Ответ

1 голос
/ 03 апреля 2020

Заменить эту строку update_field( 'gold_or_silver_member', 'Silver', $post_id );

На этот код:

$webtier = $members->webtier;
$membership = 'Silver';
if ($webtier == 3) $membership = 'Gold';
update_field( 'gold_or_silver_member', $membership, $post_id );
...