web-dev-qa-db-fra.com

Pourquoi le crochet Init pour les types de poteaux personnalisés

J'ai une question à propos de this documentation.

Pourquoi devrais-je enregistrer un type de message personnalisé dans la fonction init comme le suggère la documentation? Est-ce seulement si je n'utilise pas de plugin?

Si j'ai bien compris, init est exécuté à chaque fois que WordPress est exécuté/est chargé par l'utilisateur. Cela ne signifie-t-il pas que le site réenregistre inutilement un nouveau type de message à chaque visite? Pourquoi ne pas (si vous créez un plugin) enregistrer le type de message dans require_once plugin_dir_path( __FILE__ ) juste au moment où le plugin est activé?

Cela ne va-t-il pas aussi accélérer le site? Ou est-ce que j'interprète init() faux? Le type de publication personnalisé persiste quelque part dans la base de données, il ne doit donc pas être appelé à chaque init()?

Voici l'exemple de type de publication personnalisée de la documentation, à l'aide de init():

function create_post_type() {
  register_post_type( 'acme_product',
    array(
      'labels' => array(
        'name' => __( 'Products' ),
        'singular_name' => __( 'Product' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}
add_action( 'init', 'create_post_type' );
1
Summer Developer

La fonction register_post_type doit être exécutée chaque fois qu'une demande WP est faite. Les types de publication par défaut ne sont pas soumis à cette exigence. Vous pouvez utiliser votre code tel quel, dans le plugin MU. Créez simplement un fichier .PHP avec ce code et placez-le dans le sous-dossier mu-plugins de wp-content. Vous n'avez pas besoin de fournir d'en-tête de plugin standard.

0

Le type de message personnalisé persiste sûrement quelque part dans la base de données et ne doit donc pas être appelé à chaque init ().

Non ce n'est pas. Pourquoi aurait-il besoin de l'être? Un type de publication personnalisé est une poignée de variables que WordPress utilisera pour configurer l'interface utilisateur des données enregistrées avec ce type de publication dans la base de données.

Si les données devaient changer fréquemment et si les modifications devaient être persistantes, le stockage dans la base de données serait nécessaire, mais les types de publication ne changeront pas après le développement.

Compte tenu de cela, enregistrer les paramètres du type d'article dans la base de données ne ferait que blesser performance, car WordPress aurait besoin d'interroger la base de données uniquement pour obtenir les paramètres des types d'articles enregistrés à chaque chargement de page, ce qui est plus lent que l'exécution le code d'enregistrement à chaque fois (qui se souvient est juste une poignée de variables).

La partie la plus coûteuse de l’enregistrement d’un type de publication est la génération de ses règles de réécriture. C’est pourquoi ceux sont stockés dans la base de données et les règles de réécriture devraient être supprimés des crochets d’activation/désactivation.

3
Jacob Peattie