【问题标题】:Cron job - Moving data between databasesCron 作业 - 在数据库之间移动数据
【发布时间】:2020-04-04 00:11:21
【问题描述】:

我在 Wordpress 中有一个会员网站,它是使用名为“会员”的自定义帖子类型构建的。

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

数据库从 MS Access 开始,导出到 WP 数据库中的单独表,然后 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 中的金或银。

我们已经有了这条线:

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

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

如果数据库字段中的数字,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;
}
?>

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

【问题讨论】:

    标签: php database wordpress cron custom-post-type


    【解决方案1】:

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

    【讨论】:

    • 再次感谢亚历克 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2016-11-29
    • 2011-04-23
    • 2013-01-25
    • 1970-01-01
    • 2018-09-18
    • 2013-08-04
    相关资源
    最近更新 更多