只有在页面上执行jQuery函数(在文档上就绪)才有来自插件的短码

时间:2015-12-01 作者:Ohsik

我最终想做的是,当用户登录到该站点时,我想将重定向到包含该用户创建的所有帖子的页面,并希望通过AJAX请求加载这些帖子。

我已经保存了短代码,它将包含当前用户的所有帖子。

function ajax_write_here(){
    $output = \'<div id="write_here_ajax_wrap"></div>\';
    return $output;
}
add_shortcode(\'write-here-ajax\', \'ajax_write_here\');
并将php函数连接到AJAX请求

function write_here_ajax_dashboard() {
    echo "test";
}
add_action( \'wp_ajax_write_here_get_posts\', \'write_here_ajax_dashboard\' );
文档中的jQuery函数就绪

jQuery(document).ready( function($) {
    function write_here_list_page(){
        $.ajax({
            type: "GET",
            url: ajax_object.ajax_url, // check the exact URL for your situation
            dataType: \'html\',
            data: {
                action: \'write_here_get_posts\',
                security: ajax_object.ajax_nonce
            },
            error: function(jqXHR, textStatus, errorMessage) {
                console.log(errorMessage);
                return false;
            },
            success: function(data) {
                //console.log(data);
                $(\'#write_here_ajax_wrap\').html(\'\');
                $(\'#write_here_ajax_wrap\').append(data);
            }

        });
    }
    // Initiate function
    write_here_list_page();
});
我现在的问题是jQuery功能在整个站点的所有页面都被触发了。如何使其仅在插入了快捷码的页面上触发?

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

您可以在shourcode中wp\\u enqueue\\u脚本。这是我修复的代码。

注册JS文件

function wh_enqueue() {
    wp_register_script( \'wh-ajax-app\', WH_PATH . \'/js/write-here-ajax.js\', array(\'jquery\'), \'1.0.0\', true );
}
add_action( \'wp_enqueue_scripts\', \'wh_enqueue\' );
并在您的快捷码函数中排队

function ajax_write_here(){
    wp_enqueue_script( \'wh-ajax-app\' ); // Enqueue your script here
    $output = \'<div id="write_here_ajax_wrap"></div>\';
    return $output;
}
add_shortcode(\'write-here-ajax\', \'ajax_write_here\');
这将只在插入了短代码的页面上加载JS文件。

相关推荐

Shortcode to pull posts

我需要一些帮助。我创建了一个短代码来引入帖子,然后使用ajax加载更多帖子。我的一切都正常,但它复制了第一组帖子。下面是我的代码。这是shortcode函数:add_shortcode( \'articles-grid\', \'articles_grid\' ); function articles_grid( $atts ) { $showdate = $showauthor = $post_meta = $post_author = $post_seperator