¿La forma más eficiente de agregar un archivo javascript a publicaciones y / o páginas específicas?

17

Me pregunto cuál es el método más eficiente para agregar un archivo javascript específicamente para una publicación y / o página.

Aquí hay algunas soluciones que se me ocurrieron:

  • Cambie a la vista de edición de HTML y publique su JavaScript allí (solución bastante mala)
  • Campos personalizados con el JavaScript específico para esa publicación / página en los pares clave y valor
  • En footer.php, cargue archivos JavaScript dependiendo de la página en la que se encuentre (esto lleva a muchos condicionales)

En una nota al margen, ninguno de los archivos de JavaScript se compartirá entre páginas, literalmente será específico de lo que está viendo actualmente.

¿Alguna idea?

mousesports
fuente
Los meta cuadros / campos personalizados son su mejor opción
Miha Rekar
¿Cómo definirías la eficiencia?
fuxia
1
Por "eficiente" me refiero a la menor cantidad de redundancia de código y la forma más efectiva de hacerlo específicamente para una sola publicación / página.
Mousesports

Respuestas:

30

Creo que el mejor equilibrio entre la eficiencia y el uso de métodos adecuados de WordPress para agregar JavaScript sería agregar algo en este sentido a su archivo de funciones themes.php. Por ejemplo:

funciones.php:

function load_scripts() {
    global $post;

    if( is_page() || is_single() )
    {
        switch($post->post_name) // post_name is the post slug which is more consistent for matching to here
        {
            case 'home':
                wp_enqueue_script('home', get_template_directory_uri() . '/js/home.js', array('jquery'), '', false);
                break;
            case 'about-page':
                wp_enqueue_script('about', get_template_directory_uri() . '/js/about-page.js', array('jquery'), '', true);
                break;
            case 'some-post':
                wp_enqueue_script('somepost', get_template_directory_uri() . '/js/somepost.js', array('jquery'), '1.6', true);
                break;
        }
    } 
}

add_action('wp_enqueue_scripts', 'load_scripts');

Esto le da un control total sobre lo que se carga donde, una ubicación centralizada en sus archivos de funciones themes.php para editar lo que se carga donde: y, de esta manera, utiliza métodos de WordPress para agregar JavaScript a sus publicaciones y páginas de manera segura .

Ben HartLenn
fuente
1
Bonita y pequeña función. Tienes razón en que es útil tener una 'ubicación centralizada'. Gracias un montón.
Mousesports
3
Supongo que esto se puede limpiar un poco. Básicamente estás comprobando lo mismo con dos cajas de interruptor diferentes. Yo diría que combine ambos casos de cambio y el condicional si pudiera ser if (is_page() || is_single()). ¿Qué te parece Ben?
Mousesports
Suena como una mejora para mí. Bueno uno!
Ben HartLenn
@Ben, ¿son las funciones.php un tema interno o en wp-includes ? mi título de la página es de acceso a la casa en línea y he puesto que su función Changeing homea Access to Home Onlinepero no está trabajando?
Ciasto piekarz
@Ciastopiekarz He actualizado mi respuesta para mostrar mejor que el código va en su archivo de funciones themes.php.
Ben HartLenn
2

Lo que haría es colocarlo en el pie de página o en el encabezado y usar condicionales php.

Por ejemplo:

<?php if (is_page ('your-page')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } elseif ( is_page ('another')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } else { ?>

  <script type="text/javascript" src"the file path"></script>

<?php } ?>

De esta manera, no está llamando todos los scripts todo el tiempo en cada carga de página y solo está llamando a los que necesita.

Aquí hay un enlace al códice de Wordpress http://codex.wordpress.org/Conditional_Tags

Y si tiene scripts especiales que solo necesitan ser llamados por publicación, utilice campos personalizados.

Nicole
fuente
Gracias Nicole, este fue el # 3. Es una solución decente teniendo en cuenta que no voy a tener muchas páginas ... todavía lo estoy considerando.
Mousesports
Lo que tengo arriba se puede usar con los diversos elementos del códice de wordpress como: is_categories, is_single (para publicaciones), is_post_type ... Agregué un enlace a la lista condicional de wordpress en mi respuesta anterior.
Nicole
0

La otra forma probada es debajo de la página de agregar directamente desde el editor y agregar comentarios con la etiqueta de script de otra manera no funcionará.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
Dev G
fuente