Cambio dinámico de los enlaces de navegación (siguiente y anterior) en Wordpress a través de AJAX

Tengo en mi sitio de wordpress, dentro del bucle de single.php, una etiqueta de selección en la que las opciones son las publicaciones de la categoría actual devueltas a través de una consulta personalizada.

Al cambiar la opción seleccionada, tengo muchas funciones de javascript que funcionan bien, pero la última función entre ellas (function f_next-previous), no parece funcionar.

El objetivo de esta función es actualizar los enlaces siguientes y anteriores sin volver a cargar la página.

El código relativo a los enlaces de navegación (siguiente y anterior) en mi plantilla funciona bien y está arriba:

<div id="nav-above" class="navigation">

<div class="nav-previous"><?php previous_post_link( '%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/previous.png" />' ); ?></div>

<div class="nav-next"><?php next_post_link( '%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/next.png" />' ); ?></div>

</div><!-- #nav-above -->   

El código javascript de esta función es:

function f_next-previous(id)
{
       $.ajax({  
       cache: true,  
       type: "GET",  
       timeout: 5000,   
       url: 'wp-content/themes/twentyten/pages/next-previous.php?p='+id,  
       success: function(msg)  
        {  

    $('#nav-above').html(msg);

        },  
        error: function(msg)  
        {  
           alert("Your browser broke!");
                return false;
        }  
});

}

El archivonext-previous.php el contenido es:

<?php
$p=$_GET['p']; 
require( '../../../wp-load.php' );



$my_query = new WP_Query();
$my_query->query(array( 'post__in' => array($p)));

if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post();  ?>


<div class="nav-previous"><?php previous_post_link( '%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/previous.png" />' ); ?></div>
<div class="nav-next"><?php next_post_link( '%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/next.png" />' ); ?></div>

<?php

endwhile;
endif;

?>

Al probar este archivo php al darle un valor al parámetro p, da un resultado lógico en el navegador. Los scripts de jquery y de funciones están bien incluidos y todo AJAX en mi sitio web está bien. ¿Qué me estoy perdiendo en este trabajo?

ACTUALIZAR: Tenga en cuenta que la parte de mi archivo single.php responsable de activar la llamada AJAX es:

   <form method="post" action="">  

    <select class="select2"  name="" id="" >
    <option value="<?php the_ID();?>"><?php the_title();?></option>

    <?php 
global $post;
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$myposts = get_posts("paged=$paged&category=4");

foreach($myposts as $post) :?>

        <option value="<?php the_ID();?>"><?php the_title();?></option>

        <?php endforeach;
        wp_reset_postdata(); ?> 

        </select>
        </form>

Respuestas a la pregunta(1)

Su respuesta a la pregunta