我不知道你为什么用循环来显示你的帖子元。你的代码都很好,但你必须稍微改变一下。
Q. 为什么使用内联脚本?在我看来,您应该使用外部脚本文件来完成此操作
无论如何,这不是这里的主要问题。为了使用ajax的click函数生成内容。您必须以正确的方式绑定click函数,否则它将无法工作。
这里是一个例子,但我使用外部js文件来实现这一点,所以您只需注册即可。
/**
* Add js file with Enqueues scripts.
*/
function wpse_scripts() {
wp_enqueue_script( \'wpse-ajax-init\', get_stylesheet_directory_uri() . \'/js/wpse-ajax-init.js\', array( \'jquery\' ), \'1.0\', true );
wp_localize_script( \'wpse-ajax-init\', \'ajaxwpse\', array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' )
));
}
add_action( \'wp_enqueue_scripts\', \'wpse_scripts\' );
现在更改获取文章标题的标题标记。
// the ajax function
add_action(\'wp_ajax_data_fetch\' , \'data_fetch\');
add_action(\'wp_ajax_nopriv_data_fetch\',\'data_fetch\');
function data_fetch(){
if ( esc_attr( $_POST[\'keyword\'] ) == null ) { die(); }
$the_query = new WP_Query( array( \'posts_per_page\' => -1, \'s\' => esc_attr( $_POST[\'keyword\'] ), \'post_type\' => \'post\' ) );
if( $the_query->have_posts() ) :
while( $the_query->have_posts() ): $the_query->the_post(); ?>
<h2><a href="#" name="metakey" id="<?php the_ID(); ?>"><?php the_title();?></a> </h2>
<?php endwhile;
wp_reset_postdata();
endif;
die();
}
我在这里只是换了衣服
<h2><a href="#" name="metakey" id="metakey"><?php the_title();?></a> </h2>
到
<h2><a href="#" name="metakey" id="<?php the_ID(); ?>"><?php the_title();?></a> </h2>
因为您需要动态获取标题的ID。
完成后,在您的wpse-ajax-init.js
你只需要注册和上钩admin-ajax.php
.
(function ($) {
$("#datafetch").on(\'click\', \'a\', function(e) {
e.preventDefault();
$(\'#keyword\').delay(100).attr(\'value\', \'\');
$(this).delay(100).hide();
$.ajax({
url: ajaxwpse.ajaxurl,
type: \'post\',
data: {
action: \'data_fetchmeta\',
ID: $(this).attr(\'id\')
},
success: function(data) {
$(\'#viewspec\').html( data );
}
});
});
})(jQuery);
最终改变了你的
data_fetchmeta()
像这样的函数查询
add_action(\'wp_ajax_data_fetchmeta\' , \'data_fetchmeta\');
add_action(\'wp_ajax_nopriv_data_fetchmeta\',\'data_fetchmeta\');
function data_fetchmeta(){
$ID = esc_attr( $_POST[\'ID\'] ); ?>
<p>
<?php echo get_post_meta( $ID, \'brand\', true );?>
<?php echo get_post_meta( $ID, \'price\', true );?>
<?php echo get_post_meta( $ID, \'cpu\', true );?>
<?php echo get_post_meta( $ID, \'ram\', true );?>
</p>
<?php die();
}
你可以看到,我只是抓取了动态id并用于显示post meta。
希望这对你有意义。