jeffbyrnes
  • 0
Новичок

Пользовательские таксономии неправильно подсчитывают ревизии?

  • 0

( Примечание модератора: первоначальный заголовок был «Счетчик моей пользовательской таксономии неверен; он подсчитывает ревизии»)

Кто-нибудь сталкивался с этим раньше? Я добавил две пользовательские таксономии, и count столбец wp_term_taxonomy таблицы задается неправильно. Кажется, он подсчитывает ревизии в дополнение к опубликованному сообщению.

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

Share
  1. Привет @berkleebassist :

    Трудно проверить вашу проблему без доступа администратора к вашему сайту и вашей базе данных, но я могу дать вам некоторые указания, которые могут помочь.

    В подсчете терминов обновленной таксономии есть две функции /wp-includes/taxonomy.php : wp_update_term_count_now() и _update_post_term_count() . Они расположены (в WordPress v3.0.1) в строке 2454 и строке 2049 соответственно. Оба они вызывают хук действия 'edited_term_taxonomy' сразу после обновления счетчика. Обе функции отправляют одни и те же два параметра a $term и a, $taxonomy поэтому вы можете рассматривать это как один хук в программе.

    Вот оболочка функции, которую вы можете скопировать в functions.php файл вашей темы, чтобы обновить счетчик, просто добавьте SQL, который ОБНОВЛЯЕТ счетчик, как вы хотите, чтобы он обновлялся:

    add_action('edited_term_taxonomy','yoursite_edited_term_taxonomy',10,2);
    function yoursite_edited_term_taxonomy($term,$taxonomy) {
      global $wpdb;
      $sql = "...set this to UPDATE taxonomy term count how you want...";
      $wpdb->query($sql);
    }
    

    Дайте мне знать, если вам нужно более конкретное руководство по написанию команды SQL.

    Кроме того, вот trac-тикет, в котором обсуждается что-то подобное; это может быть связано:

    • 0
  2. Хорошо, поработайте над SQL-запросом, но возник новый косяк: у меня есть две таксономии, и теперь я пытаюсь понять, как запустить эту функцию с правильным запросом для каждой из них. Вот каждый из моих запросов:

    UPDATE wp_cln_term_taxonomy tt1
    SET count =
    (SELECT count(p.ID) FROM  wp_cln_term_relationships tr
    LEFT JOIN wp_cln_posts p
       ON (p.ID = tr.object_id AND p.post_type = 'examples' AND p.post_status = 'publish')
    WHERE tr.term_taxonomy_id = tt1.term_taxonomy_id)
    WHERE tt1.taxonomy = 'example-cats'
    

    И второй:

    UPDATE wp_cln_term_taxonomy tt1
    SET count =
    (SELECT count(p.ID) FROM  wp_cln_term_relationships tr
    LEFT JOIN wp_cln_posts p
       ON (p.ID = tr.object_id AND p.post_type = 'ideas' AND p.post_status = 'publish')
    WHERE tr.term_taxonomy_id = tt1.term_taxonomy_id)
    WHERE tt1.taxonomy = 'idea-cats'
    

    Каждый из них устанавливает правильное количество сообщений, но могу ли я всегда запускать оба запроса вместе? Или есть способ отключить только один или другой, чтобы уменьшить нагрузку на MySQL?

    • 0

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

You must login to add an answer.