如何在单击ajax wordpress上创建子类别?

时间:2018-09-16 11:57:16

标签: php ajax wordpress wordpress-theming custom-wordpress-pages

嗨,我想在ajax上创建类别wordpress。示例我有类别A和类别B。

类别A有2个孩子,类别B也有2个孩子。第一个用户必须选择类别A或类别B,选择了类别A后,该选项将更改为子类别A。

选择子类别A后,将为用户提供类别A的孙子选项。从最后一个选项将重定向到用户选择的帖子类别列表。在最后一页,我们输出选择的用户类别。 (例如A类,A类儿童,A类大儿童)

有什么建议吗?

解决方案:

对不起,我认为标题不正确。我在这里Display Child Categories on click

找到了解决方案

因此,我只使用jquery来隐藏和显示单击时的类别。希望这对遇到同样问题的所有人有所帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

您基本上需要两件事:wp_insert_term和一些AJAX functionality

  

从最后一个选项将重定向到用户选择的帖子类别列表。

这时,您可以触发您的AJAX请求。我建议您将分类术语词条作为data attribute附加到链接:

<a class="category_selection" href="#" data-taxonomy="tax_a" data-parentterm="parent_a" data-term="term_a">Cat A</a>

您可以将jQuery函数绑定到click事件:

$( document ).on( 'click', 'a.category_selection', function ( e ) {
    var data = {
                action: 'category_selection',
                term: $( this ).data( 'term' ),
                parent_term : $( this ).data( 'parentterm' ),
                taxonomy = $( this ).data( 'taxonomy' ),
                nonce: my_vars.ajax_nonce
            };
    $.ajax( {
                type: 'POST',
                url: my_vars.ajaxurl,
                data: data,
                async: true,
                success: function ( response ) {

                    // Parse response
                    var returndata = JSON.parse( response );

                    $( '.container' ).html( returndata );
                }
            } );
});

现在,您需要一个PHP回调函数,您可以将其附加到操作category_selection。在此功能中,您会将术语添加到类别中。

add_filter( 'wp_ajax_category_selection', 'add_term' );
add_filter( 'wp_ajax_nopriv_category_selection', 'add_term' );

function add_term() {
    check_ajax_referer( 'my_ajax', 'nonce' );
    $taxonomy = filter_input( INPUT_POST, 'taxonomy', FILTER_SANITIZE_STRING );
    // Sanitize the other input variables

    $newterm = wp_insert_term( $term, $taxonomy, array( 'parent' => $parent_term ) );

    if ( ! is_wp_error( $newterm ) ) :

        echo json_encode( array( 'Success' ) );

    endif;

    echo json_encode( array( 'Failure' ) );
    exit;
}

这应该使您大致了解如何处理。这并不意味着复制粘贴,因为仍然缺少某些内容,例如创建AJAX现成的或您需要的my_vars javascript对象。您可以在上面我链接的食典文章中找到必要的信息。