webentwicklung-frage-antwort-db.com.de

register_taxonomy mit mehreren Objekttypen und update_count_callback

Das register_taxonomy accept-Array als Objekttyp, damit ich so viele benutzerdefinierte Beitragstypen mit einer benutzerdefinierten Taxonomie verknüpfen kann. Das ist gut.

Das Problem ist, dass die Standard-Taxonomie-Anzahl mit den Standardeinstellungen immer Null ist. Was sollte ich also für das Argument update_count_callback einstellen?

Ich habe darüber nachgedacht, da die Taxonomie mit mehreren Beitragstypen verknüpft ist, sodass die Anzahl bei der Anzeige eines bestimmten Beitragstyps von Bedeutung ist.

Was ist die beste Methode, um die Anzahl benutzerdefinierter Taxonomien zu verarbeiten, wenn diese Taxonomie mit mehreren benutzerdefinierten Beitragstypen verknüpft ist?

4
Yoga

Ich habe von Zeit zu Zeit mit ähnlichen Dingen zu tun. Was ich beim Verwenden benutzerdefinierter Beitragstypen und Taxonomien getan habe, ist Folgendes:

  • Richten Sie einen Rückruf bei init (vor 10) ein, um Taxonomien zu registrieren.
  • Richten Sie einen anderen bei Init (vor 10) ein, um Beitragstypen zu registrieren.
  • Richten Sie eine weitere auf 10 ein, um sie zuzuordnen, möglicherweise später, wenn Sie mit benutzerdefinierten Taxonomien und Beitragstypen anderer Personen arbeiten und diese bei 10 registriert werden.

Das hat fast immer seltsame Probleme beseitigt, auf die ich mit benutzerdefinierten Objekten und der Dokumentation zu register_ * -Funktionen in WordPress-Notizen gestoßen bin. Sie sollten sie auf jeden Fall während der Initialisierung registrieren.

Wenn Sie sie nicht manuell verknüpfen, kann es sein, dass Sie zwischen ihnen hin und her sprechen oder nicht ... und der update_callback_count ist Teil dieses Hin und Her-Sprechens, sodass ich alle Objekte während der Initialisierung vor 10 registriere und sie dann alle verknüpfe nach (oder am) 10.

add_action('init', do_create_taxonomies, 7);
function do_create_taxonomies() {
   # setup taxonomies as array of key => options arrays
   foreach ( $taxonomies as $slug => $options ) {
      register_taxonomy("{$slug}", null, "{$options}");
   }
}

add_action('init', do_create_post_types, 8);
function do_create_post_types() {
   # setup post types as array of key => options arrays
   foreach ( $post_types as $slug => $options ) {
      register_post_type("{$slug}", "{$options}");
   }
}

add_action('init', do_bind_post_types_to_taxonomies, 11);
function do_bind_post_types_to_taxonomies() {
   # setup relationships as Tax_slug => array( post_type_slugs )
   foreach ( $relationships as $tax_slug => $post_types ) {
      if ( is_array($post_types) ) {
         foreach ( $post_types as $post_type_slug ) {
            register_taxonomy_for_object_type( "{$tax_slug}", "{$post_type_slug}" );
         }
      } else {
         register_taxonomy_for_object_type("{$tax_slug}", "{$post_types}");
      }
   }
}

Das hat alle Arten von seltsamen Problemen im Zusammenhang mit benutzerdefinierten Beitragstypen und Taxonomien für mich gelöst. Wenn dies nicht ausreicht, lohnt es sich möglicherweise, in der Quelle nachzuschlagen, um zu sehen, wie _update_post_term_count genau funktioniert. Sehen Sie sich Ihre Beziehungen an, um herauszufinden, ob es stattdessen _update_generic_term_count erzwingt.

1
Privateer