使用自动刷新将ACF值添加到脚本

时间:2020-03-27 作者:hes

我有一个带有ACF编号字段的CPT。现在,我想在不刷新页面的情况下创建新的CPT时,获得所有现有数字的总数。在这里使用setTimeout似乎不起作用。还有什么其他想法可以实现这一点吗?

PHP

function counter_script() {

wp_register_script(\'counter\', get_template_directory_uri() . \'/js/counter.js\'); 
wp_enqueue_script(\'counter\');   

global $post;
$postargs = array(
    \'post_type\' => \'cpt\'
);
$cpt_query = new WP_Query($postargs);
if ($cpt_query->have_posts()) : while ($cpt_query->have_posts()) :  $cpt_query->the_post();
    $numbersArray += get_field(\'numbers\'); 
    endwhile; 
endif; 
wp_reset_query();

wp_localize_script( \'counter\', \'numbers\', $numbersArray);

}
add_action( \'wp_enqueue_scripts\', \'counter_script\' );
脚本

function updateNumbers(){
    $(".counter").html(numbers);
    setTimeout(updateNumbers, 5000);
}

updateNumbers();

1 个回复
最合适的回答,由SO网友:hes 整理而成

好啊已解决。

PHP

function counter_script() {

wp_enqueue_script(\'counter\', get_template_directory_uri() . \'/js/counter.js\');  

wp_localize_script( \'counter\', \'numbers\', array(
    \'ajaxurl\' => admin_url( \'admin-ajax.php\' )
));

}
add_action( \'wp_enqueue_scripts\', \'counter_script\' );

add_action( \'wp_ajax_nopriv_numberstotal\', \'numberstotal\' );
add_action( \'wp_ajax_numberstotal\', \'numberstotal\' );

function numberstotal() {

global $post;
$postargs = array(
    \'post_type\' => \'cpt\',
    \'posts_per_page\' => -1
);
$cpt_query = new WP_Query($postargs);
if ($cpt_query->have_posts()) : while ($cpt_query->have_posts()) :  
$cpt_query->the_post();
    $numbersArray += get_field(\'numbers\'); 
    endwhile; 
endif; 
wp_reset_query();

echo json_encode($minutesArray);

wp_die();
}
脚本

function updateNumbers(){
    $.ajax({
    url: numbers.ajaxurl,
    data: {
        action: \'numberstotal\'
    },
    success: function (response) {
        $(\'.counter\').html(response)
    }
    });
    setTimeout(updateNumbers, 5000);
}

updateNumbers();

相关推荐

通过函数更改基于页面模板的菜单。php

如果某个页面使用特定的页面模板,我会尝试调出该页面的主菜单。直到我在页面上添加了第二个菜单,这一切都很顺利。如果您能给我一些指导,告诉我如何只针对主菜单,而不是页面上的所有菜单,我将不胜感激。我尝试了“主菜单”,但没有成功。在函数中。php:add_filter(\'wp_nav_menu_args\', function ($args) { if (is_page_template(\'page-template-custom.php\')) { $args[\'menu\'