Advertisement
nshelper

APTO - Update the current language list with the one set on the English, when published a post and l

Sep 28th, 2024 (edited)
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.46 KB | None | 0 0
  1. <?php
  2.    
  3.     /**
  4.     * Update the current language list with the one set on the English, when published a post and linked to an english origin object
  5.     *
  6.     */
  7.     define ( 'APTO_WPML_BASE_LANG', 'en' );
  8.     add_action( 'save_post', '__custom_save_post', 10, 3 );
  9.     function __custom_save_post( $post_ID, $post, $update )
  10.         {
  11.             $current_language   =   apply_filters( 'wpml_current_language', null );
  12.             if ( $current_language  === APTO_WPML_BASE_LANG )
  13.                 return;
  14.                
  15.             //Get the base languag post ID
  16.             $base_post_id = apply_filters( 'wpml_object_id', $post_ID, $post->post_type , false, APTO_WPML_BASE_LANG );
  17.             if ( empty ( $base_post_id ) )
  18.                 return;
  19.                
  20.             //attempt to identify the sort list
  21.             $args   =   array(
  22.                                 '_view_type'            =>  array('multiple'),
  23.                                 '_wpml_synchronize'     =>  array('yes')
  24.                                 );
  25.                          
  26.             $matched_sorts    =   APTO_functions::get_sorts_by_filters( $args );
  27.            
  28.             if ( ! is_array ( $matched_sorts )    ||  count ( $matched_sorts )  <   1 )
  29.                 return;
  30.                
  31.             reset ( $matched_sorts );
  32.             $sort_item  =   current ( $matched_sorts );
  33.             $sort_ID    =   $sort_item->ID;
  34.            
  35.             //identify the base sort view
  36.             $args = array(
  37.                             '_view_selection'   =>  'archive',
  38.                             '_view_language'    =>  APTO_WPML_BASE_LANG
  39.                             );
  40.             $base_sort_view_id   =   APTO_functions::get_sort_view_id_by_attributes( $sort_ID, $args );
  41.            
  42.             if ( empty ( $base_sort_view_id ) )
  43.                 return;
  44.            
  45.             //Identify the current language sort_view
  46.             $args = array(
  47.                             '_view_selection'   =>  'archive',
  48.                             '_view_language'    =>  $current_language
  49.                             );
  50.             $language_sort_view_id   =   APTO_functions::get_sort_view_id_by_attributes( $sort_ID, $args );
  51.            
  52.             if ( empty ( $language_sort_view_id ) )
  53.                 {
  54.                     include_once(APTO_PATH . '/include/apto_interface_helper-class.php');;
  55.                     include_once(APTO_PATH . '/include/apto_admin_functions-class.php');
  56.                    
  57.                     $APTO_interface_helper  =   new APTO_interface_helper();
  58.  
  59.                     //create the sort view
  60.                     $sort_view_meta     =   array(
  61.                                                     '_order_type'               =>  'manual',
  62.                                                     '_view_selection'           =>  'archive',
  63.                                                     '_view_language'            =>  $current_language
  64.                                                     );
  65.                        
  66.                     $language_sort_view_id       =   $APTO_interface_helper->create_view( $sort_ID, $sort_view_meta);
  67.                 }
  68.                
  69.             $base_order_list    =   APTO_functions::get_order_list( $base_sort_view_id );
  70.            
  71.             $translated_objects =   [];
  72.             foreach ( $base_order_list  as  $post_id )
  73.                 {
  74.                     $translated_post_id =   icl_object_id ( $post_id, $post->post_type, FALSE, $current_language );
  75.                     if ( $translated_post_id    >   0   )
  76.                         $translated_objects[]   =   $translated_post_id;
  77.                 }
  78.            
  79.             APTO_functions::delete_sort_list_from_table( $language_sort_view_id );
  80.            
  81.             global $wpdb;
  82.            
  83.             $query = "INSERT INTO `". $wpdb->prefix ."apto_sort_list`
  84.                        (`sort_view_id`, `object_id`)
  85.                        VALUES ";
  86.            
  87.             $first  =   TRUE;            
  88.             foreach ( $translated_objects as $post_id )
  89.                 {
  90.                     if ( ! $first )
  91.                         $query  .=  ",\n";
  92.                        
  93.                     $query  .=  "('". $language_sort_view_id ."', '". $post_id ."')";
  94.                    
  95.                     $first  =   FALSE;
  96.                 }
  97.             $results = $wpdb->get_results($query);
  98.            
  99.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement