Intereting Posts

Как добавить поле создания даты при создании пользовательских отношений таксономии?

Мне нужно отобразить список сообщений и заказать его по дате. Дата создания отношений таксономии.

Это возможно? Если да, то как я могу подойти к нему?

Спасибо.

EDIT – РЕШАЕМ!

Спасибо GM за то, что помогли мне.

Вот что я сделал:

Для каждого набора и удаления действия я даю ему другую meta_key с именем пользователя как переменной

  • Мета-ключ с переменной

    $meta_key = '_category_relation_added_' . $user_name; 
  • Удаление термина и мета

     delete_post_meta($post_ID, $meta_key); wp_remove_object_terms( $post_ID, $user_name, $taxonomy ); 
  • Добавить термин и мета

     wp_set_object_terms( $post_ID, $user_name, $taxonomy, true ); update_post_meta( $post_ID, $meta_key, time() ); 
  • Затем мы запрашиваем сообщения с WP_Query

     $meta_key = '_category_relation_added_' . $user_name; $args = array( // all your args here 'meta_key' => $meta_key, 'orderby' => 'meta_value_num', 'order' => 'DESC' // from more to less recent ); $query = new WP_Query( $args ); 

UPDATE – удаление всех постметаллов, связанных с термином, когда этот термин удален.

 add_action( 'delete_term_taxonomy', function($tt_id) { $term = get_term_by('term_taxonomy_id', $tt_id, 'favorite'); $user_name = $term->name; $meta_key = "_category_relation_added_" . $user_name; delete_post_meta_by_key( $meta_key ); }, 9, 1); 

Да, выполнимо.

Я предлагаю вам добавить настраиваемое поле, когда к сообщению добавляются некоторые термины этой конкретной таксономии.

Вы также должны удалить это настраиваемое поле, когда все условия будут удалены из одной записи.

Это можно сделать, используя 'set_object_terms' .

Пожалуйста, прочитайте комментарии в коде для более подробного объяснения:

 add_action( 'set_object_terms', function( $object_id, $terms, $tt_ids, $taxonomy ){ // Customize post type in next line according to your needs. I used 'category' as example if ( $taxonomy === 'category' ) { $post = get_post( $object_id ); if ( empty( $post ) ) return; // Customize post type in next line according to your needs. I used 'post' as example if ( $post->post_type !== 'post' ) return; // let's see if the post has some terms of this category, // because the hoook is fired also when terms are removed $has_terms = get_the_terms( $object_id, $taxonomy ); // here we see if the post already has the custom field $has = get_post_meta( $post->ID, "_category_relation_added", true ); if ( ! $has && ! empty( $has_terms ) ) { // if the post has not the custom field but has some terms, // let's add the custom field setting it to current timestamp update_post_meta( $post->ID, "_category_relation_added", time() ); } elseif ( $has && empty( $has_terms ) ) { // on the countrary if the post already has the custom field but has not terms // (it means terms are all removed from post) remove the custom fields delete_post_meta( $post->ID, "_category_relation_added" ); } } }, 10, 4); 

Не забудьте изменить название таксономии и типа публикации.

После добавления предыдущего кода в ваш functions.php вы можете заказать свои сообщения, используя это настраиваемое поле:

 $args = array( // all your args here 'meta_key' => '_category_relation_added', 'orderby' => 'meta_value_num', 'order' => 'DESC' // from more to less recent ); $query = new WP_Query( $args );