WP主题中未加载整个JS文件夹

时间:2018-05-28 作者:The WP Intermediate

enter image description here

当我在single中包含此函数时。php整个JS文件夹不会在浏览器中下载。

  add_action(\'wp_ajax_myfilter\', \'misha_filter_function\');
add_action(\'wp_ajax_nopriv_myfilter\', \'misha_filter_function\');
function misha_filter_function(){
            $args = array(
            \'taxonomy\' => \'category\',
            \'field\' => \'id\',
            \'post_type\' => \'post\',
            \'posts_per_page\' => 10,
            \'post_status\' => \'publish\',
        );

        // for taxonomies / categories
        if( isset( $_POST[\'categoryfilter\'] ) )
            $args[\'tax_query\'] = array(
                array(
                    \'taxonomy\' => \'category\',
                    \'field\' => \'id\',
                    \'terms\' => $_POST[\'categoryfilter\'],
                    \'post_type\' => \'post\',
                    \'posts_per_page\' => 10,
                    \'post_status\' => \'publish\',
                )
            );
        // the query
        $the_query = new WP_Query( $args );
    ?>
    <?php if ( $the_query->have_posts() ) : ?>
        <!-- the loop -->
        <ul class="sidebar-flex">
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
            <li class="sbox sbox4">
                <div class="simg"><?php the_post_thumbnail( \'large\') ?></div>
                <div class="stext3">
                    <h4><?php $categories = get_the_category();
                    if ( ! empty( $categories ) ) {
                      echo \'<a class="themecolor" href="\' . esc_url( get_category_link( $categories[0]->term_id ) ) . \'">\'  . esc_html( $categories[0]->name ) . \'</a>\';
                    } ?></h4>
                    <h3><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
                </div>
            </li>
        <?php endwhile; ?>
        </ul>
        <!-- end of the loop -->
        <!-- <?php wp_reset_postdata(); ?> -->
    <?php endif; ?>
    <?php die(); ?>
<?php } ?>
这种行为很奇怪?原因可能是什么?

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

问题是die(). 你不能die() 在模板内部,否则将在该点停止整个站点的加载。如果你仔细看,你会发现不只是JS文件夹没有加载,而是整个页脚。

您需要将代码分为两个函数。一个输出要输出的HTML的函数,另一个函数运行第一个函数,然后终止。

因此,有第一个功能:

function misha_filter_function() {
    // Query posts, output loop, etc. etc.
}
然后是第二个函数,仅针对AJAX,它调用第一个函数die():

function misha_filter_function_ajax() {
    misha_filter_function();
    die();
}
然后为AJAX挂接第二个函数:

add_action( \'wp_ajax_myfilter\', \'misha_filter_function_ajax\' );
add_action( \'wp_ajax_nopriv_myfilter\', \'misha_filter_function_ajax\' );
第一个函数也可以只是一个模板。然后在AJAX函数和模板中,您可以使用get_template_part():

function misha_filter_function_ajax() {
    get_template_part( \'partials/filter\' ); // theme-directory/partials/filter.php
    die();
}
此外,您应该使用GET$_GET 对于此用例。POST 应用于将数据发送到要处理的服务器,通常涉及更新或创建资源。GET 应用于检索(获取)数据。您只是在检索HTML,因此应该使用GET 方法

结束

相关推荐

WordPress子主题PHP代码更改问题

我对WordPress很陌生,昨天我尝试从AccessPress Dimit 1.1.9父主题创建我的第一个子主题(我通过使用子主题化插件作弊),对子主题的标题进行了轻微修改。php文件,它工作了!然而,这给我提出了一些问题:我知道父主题更新不应该影响子主题修改,但这是否意味着如果我有标题。php在我的子主题(wp-content/themes/indightchild/header.php)中,则没有父主题更新到标题。php会影响我的网站吗?修改小部件PHP代码是否也适用于此?如果以上任何一个答案都是“