Cron 作业 - 在数据库之间移动数据

Cron job - Moving data between databases

我在 Wordpress 中有一个会员网站,它是使用名为 'members'.

的自定义 post 类型构建的

出于多种原因,我们使用了 cron 作业来 运行 并使用来自单独数据库的数据填充这些 CPT 字段,(公司使用标准 WP 数据库来存储是不可行的他们的数据。

数据库在 MS Access 中启动,导出到我们 WP 数据库中的一个单独的 table,然后 cron 作业从该数据库中提取数据并将其添加到 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 等中创建的字段中

对于每个成员,在后端,我有一个使用高级自定义字段创建的下拉列表(字段名称:gold_or_silver_member,带有黄金或白银的选择选项),将他们标记为白银会员的黄金.

银牌是默认的,如果是金牌,各种有条件的事情恰好在他们的目录页面上显示更多功能。

在我们从中提取的数据库中,负责此操作的列称为 webtier 因此在数据库级别,数据库用户向该字段添加数字 2 是成员是银和一个数字如果会员是金牌,则 3 到该字段。

我正在尝试以上述方式从数据库中获取此号码,并将其输出到每个成员的 ACF 内的 return 黄金或白银。

我们已经有了这条线:

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

我认为,默认情况下所有成员都是银牌,所以我认为逻辑只需要说:

如果数据库字段中的数字,webtier是3那么把ACF字段改成gold

反正我觉得...

老实说,我有点卡住了,我是从其他人那里得到这个的,因为目前的情况我无法联系到他,所以我的任务是解决这个问题...有人能帮忙吗并建议我?

完整的 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;
}
?>

非常感谢任何帮助或建议!!感谢观看。

替换此行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 );