curtismchale
  • 0
Профи

Учет префиксов таблиц WordPress

  • 0

Учитывая приведенный ниже код, как мне учесть префикс таблицы, который может меняться от установки к установке? Есть ли лучший способ написать это, чем SQL-запрос? Есть ли переменная, которую я пропустил, которая предоставляет префикс таблицы для таких случаев?

// setting posts with current date or older to draft
if (!wp_next_scheduled('sfn_expire_hook')){
    wp_schedule_event( time(), 'hourly', 'sfn_expire_hook');
}
add_action( 'sfn_expire_hook', 'sfn_show_expire');
function sfn_show_expire(){
    global $wpdb;
    $server_time = date('mdy');
    $result = $wpdb->get_results("SELECT * FROM GrandDn4wP_posts WHERE post_type = 'show' AND post_status = 'publish'");
    if( !empty($result)) foreach ($result as $a){
        $show_time = get_the_time('mdy', $a->ID);
        if ( $server_time > $show_time ){
           $my_post = array();
           $my_post['ID'] = $a->ID;
           $my_post['post_status'] = 'draft';
           wp_update_post( $my_post );
        }
    } // end foreach
}
Share
  1. Если кто-то ищет переменную префикса таблицы, вот несколько способов получить к ней доступ: (i) $wpdb->prefix в пределах области global $wpdb видимости и (ii) с помощью $table_prefix переменной.

    • 0
  2. Вы можете переписать код следующим образом:

    // setting posts with current date or older to draft
    if (!wp_next_scheduled('sfn_expire_hook')){
        wp_schedule_event( time(), 'hourly', 'sfn_expire_hook');
    }
    add_action( 'sfn_expire_hook', 'sfn_show_expire');
    function sfn_show_expire(){
        global $wpdb;
        $server_time = date('mdy');
        $result = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'show' AND post_status = 'publish'");
        if( !empty($result)) foreach ($result as $a){
            $show_time = get_the_time('mdy', $a->ID);
            if ( $server_time > $show_time ){
               $my_post = array();
               $my_post['ID'] = $a->ID;
               $my_post['post_status'] = 'draft';
               wp_update_post( $my_post );
            }
        } // end foreach
    }
    

    но лучше написать это с помощью функции get_posts:

    // setting posts with current date or older to draft
    if (!wp_next_scheduled('sfn_expire_hook')){
        wp_schedule_event( time(), 'hourly', 'sfn_expire_hook');
    }
    add_action( 'sfn_expire_hook', 'sfn_show_expire');
    function sfn_show_expire(){
        $server_time = date('mdy');
        $result = get_posts( array( post_type => 'show', post_status => 'publish' ) );
        if( !empty($result)) foreach ($result as $a){
            $show_time = get_the_time('mdy', $a->ID);
            if ( $server_time > $show_time ){
               $my_post = array();
               $my_post['ID'] = $a->ID;
               $my_post['post_status'] = 'draft';
               wp_update_post( $my_post );
            }
        } // end foreach
    }
    
    • 0

Оставить ответ

You must login to add an answer.