¿Cómo poner en cola enlaces alternativos, íconos y manifiestos en wp_head?

4 minutos de lectura

avatar de usuario
TruMan1

Estoy tratando de renderizar meta, íconos y código de la tienda de aplicaciones en la cabeza de mi complemento, pero fue rechazado por el equipo de revisión del complemento de WordPress:

Utilice los comandos wp_enqueue

Esto es lo que estoy tratando de agregar:

add_action('wp_head', array(&$this, 'add_meta'));

public function add_meta() {
    global $post;

    $url = $_SERVER['HTTP_HOST'] . rtrim($_SERVER['REQUEST_URI'], "https://stackoverflow.com/");

    // Smart App Banner for Safari and iOS
    echo '<meta name="apple-itunes-app" content="app-id=' . $this->getOption('iOSID') . ', app-argument=" . "http://' . $url . '">';

    // Google App Indexing
    echo '<link rel="alternate" href="https://stackoverflow.com/questions/50553154/android-app://" . $this->getOption('AndroidID') . "https://stackoverflow.com/" . 'http/' . $url . '" />';
    echo '<link rel="alternate" href="ios-app://' . $this->getOption('iOSID') . "https://stackoverflow.com/" . 'http/' . $url . '" />';

    // App Icons
    echo '<link rel="icon" type="image/png" href="http://stackoverflow.com/favicon-32x32.png" sizes="32x32">';
    echo '<link rel="icon" type="image/png" href="http://stackoverflow.com/android-chrome-192x192.png" sizes="192x192">';
    echo '<link rel="icon" type="image/png" href="http://stackoverflow.com/favicon-96x96.png" sizes="96x96">';
    echo '<link rel="icon" type="image/png" href="http://stackoverflow.com/favicon-16x16.png" sizes="16x16">';
    echo '<link rel="manifest" href="http://stackoverflow.com/manifest.json">';
    echo '<link rel="mask-icon" href="http://stackoverflow.com/safari-pinned-tab.svg" color="#5bbad5">';
    echo '<meta name="msapplication-TileColor" content="#da532c">';
    echo '<meta name="msapplication-TileImage" content="/mstile-144x144.png">';
}

Sin embargo, no veo una forma en que estos especiales link y meta Las etiquetas se pueden hacer con wp_enqueue_style. ¿Cuál es la forma correcta de “WordPress” de hacer esto desde un complemento?

  • Probablemente le preguntaría al equipo de revisión de WordPress… podrías decir, “Estoy tratando de hacer lo que wp_site_icon() está haciendo, que está (también) enganchado a wp_head. Entonces, ¿qué tiene de malo mi código?”… bueno, entiendes la idea.

    – Sally C.J.

    31 de mayo de 2018 a las 2:21

  • No entiendo por qué fue rechazado, así imprime el propio WP <link> y <meta> tags… ¿Es ese todo el código que estás usando en wp_head gancho de acción? Revisé el código base de WP y eso es todo, no hay una cola especial…

    – brasofilo

    31 de mayo de 2018 a las 4:22


  • ¿Estás creando una clase para ello?

    – Rajkumar Gour

    6 de junio de 2018 a las 4:58

Depende del tipo de contenido que desee incluir en .

Los scripts y estilos deben registrarse y/o ponerse en cola utilizando las funciones de WP adecuadas:

  • wp_enqueue_script()

  • wp_enqueue_style()

Cualquier otro tipo de contenido se puede conectar usando el cabeza_wp gancho de acción:

function hook_metacontent() {
    echo '<meta name="apple-itunes-app" content="app-id=' . $this->getOption('iOSID') . ', app-argument=" . "http://' . $url . '">';

    // Google App Indexing
echo '<link rel="alternate" href="https://stackoverflow.com/questions/50553154/android-app://" . $this->getOption('AndroidID') . "https://stackoverflow.com/" . 'http/' . $url . '" />';
    echo '<link rel="alternate" href="ios-app://' . $this->getOption('iOSID') . "https://stackoverflow.com/" . 'http/' . $url . '" />';

    // App Icons
    echo '<link rel="icon" type="image/png" href="http://stackoverflow.com/favicon-32x32.png" sizes="32x32">';
    echo '<link rel="icon" type="image/png" href="http://stackoverflow.com/android-chrome-192x192.png" sizes="192x192">';
    echo '<link rel="icon" type="image/png" href="http://stackoverflow.com/favicon-96x96.png" sizes="96x96">';
    echo '<link rel="icon" type="image/png" href="http://stackoverflow.com/favicon-16x16.png" sizes="16x16">';
    echo '<link rel="manifest" href="http://stackoverflow.com/manifest.json">';
    echo '<link rel="mask-icon" href="http://stackoverflow.com/safari-pinned-tab.svg" color="#5bbad5">';
    echo '<meta name="msapplication-TileColor" content="#da532c">';
    echo '<meta name="msapplication-TileImage" content="/mstile-144x144.png">';
}
add_action('wp_head', ‘hook_metacontent');

¿Cuál es la forma correcta de “WordPress” de hacer esto desde un complemento?

El enlace correcto de WordPress que está buscando es específicamente wp_head para enganchar los metadatos, así:

add_action( 'wp_head', 'add_meta' );

function add_meta() {

    // Post object if needed
    global $post;

    // Page conditional if needed
    if( is_page() ){}

    ?>

        <meta name="someName" content="someContent" />

    <?php

}

Nota: Si necesita eliminar un enlace predeterminado, este archivo le dará la prioridad que debe usar para eliminar el enlace.

¿Cuál es la forma correcta de “WordPress” de hacer esto desde un complemento?

Ya lo hiciste de la manera correcta. Si el equipo de revisión de WordPress dijo o dice que no lo es, pregúnteles por qué, o incluso cómo debe codificar exactamente el function. =)

No obstante, es posible que desee comprobar esto: https://stackoverflow.com/a/8086420/9694859

¿Ha sido útil esta solución?