在按钮点击时生成快捷代码和HTML

时间:2018-05-01 作者:Jon Goe

我应该说我是WordPress的新手,所以我不确定这是否可以做到。我有一个页面是按照以下方式制作的

[su_spoiler title="Add Call" open="yes" style="fancy" icon="arrow"]
[gravityform id=10]
[/su_spoiler]

[su_spoiler title="Add Problem" open="closed" style="fancy" icon="arrow"]
[gravityform id=7]
[/su_spoiler]

<div><button id="add-problem"> Add Problem</button></div> 
我想让那个按钮附加below 现有的Add Problem spoiler另一个spoiler,重力表单id为7,即我想在单击按钮时生成相同的代码,在我的页面上创建初始问题表单。

[su_spoiler title="Add Problem" open="closed" style="fancy" icon="arrow"]
[gravityform id=7]
[/su_spoiler]
这意味着每次单击按钮时,页面都会添加一个扰流板和其中的表单。我有什么办法可以做到这一点?

1 个回复
SO网友:Beee

我认为这将是阿贾克斯的工作。我做了类似的事情来加载更多的帖子,基本上就是onclick、load content、append content(到现有元素)。

我还没有完全完成,但我认为这将给你一个良好的推动,朝着理想的方向。

首先,我们需要一个函数,当您单击它时,它可以满足您的需要。说明如所示this page. 如果你想让nopriv对访问者有用,请确保你也添加了nopriv。

function sd_get_more_posts() {
    // Handle request then generate response using WP_Ajax_Response

    // get posts
    $post_args = array(
        // your arguments
    );
    $more_posts = get_posts($post_args);

    // echo the output, in my case I use Timber, hence why the Timber::render
    Timber::render( \'partials/overview.twig\',
        array(
            \'modifier\' => $modifier,
            \'posts\'    => $more_posts
        )
    );

    // Don\'t forget to stop execution afterward.
    wp_die();

}
add_action( \'wp_ajax_more_load\', \'sd_get_more_posts\' );
add_action( \'wp_ajax_nopriv_more_load\', \'sd_get_more_posts\' );
使用我的示例,您需要一个“加载更多帖子”类的链接。您需要将其添加到某个位置并将其排队。

jQuery(function($){

    jQuery(".load_more_posts").click(function(e) {
        e.preventDefault();
        // jQuery(this).addClass(\'hidden\'); // uncomment this to hide the trigger on click.

        // you might not need them, but they show a bit of what is possible.
        offset = jQuery(this).data(\'offset\');
        amount = jQuery(this).data(\'amount\');

        var data = {
            \'action\': \'more_posts\',
            \'offset\': offset,
            \'amount\': amount
        };
        jQuery.post(
            ajaxurl,
            data,
            function(response) {
                if (jQuery(response).find(\'.class-of-element\')){
                    var newElems = jQuery(response).find(\'.class-of-element\').html();
                    jQuery(\'.class-of-element\').append(newElems);
                }
            }
        );
    });

});
希望这有帮助。

结束

相关推荐

WordPress Plugins won't save

我有一个WordPress网站,我刚刚接管了一个客户,因此我没有能力与以前的网站管理员/开发人员交谈。该网站使用的是YOOtheme对Subway稍加修改的版本。为了更新插件位置,Subway的一部分有“小部件选项”。我无法更改外观或小部件显示的页面,因为我无法保存任何内容。它看起来像已保存,但没有保存,或者您会在保存按钮旁边看到“加载循环”,它一直在运行。Things to note:<WordPress和插件是最新的。在我们转移到新服务器之前,插件是可更新的。新服务器有一个max\\u inpu