保存自定义术语-挂钩CREATE_TERM不起作用

时间:2016-03-02 作者:Carsten Schmitt

我正试图用我自己的信息保存一个自定义术语。

我尝试了挂钩:-create\\u term-created\\u term-create\\u{my\\u taxonomy}

但似乎什么都不管用。

当我保存术语时,它只会与默认的wordpress信息一起保存。当我编辑术语时,hook-edit\\u termworks finde!

实际上,我不知道为什么create\\u术语没有被激发。还有什么别的事要做吗?还有什么别的勾当吗。或者wordpress通过ajax保存术语是一个问题?

这是我如何使用钩子的代码

if ( ! defined ( \'ABSPATH\' ) ) {
    exit;
}

class my_term_class {
    public function __construct() {
        add_action( \'create_term\', array( $this, \'save_my_fields\' ), 10, 3 ); 
        add_action( \'edit_term\', array( $this, \'save_my_fields\' ), 10, 3 );
        //...
    }

    public function save_my_fields( $term_id, $tt_id = \'\', $taxonomy = \'\' ) {
        write_log("this log is only written by edit_term!");
        //...
    }
}
new my_term_class();
编辑:我为我的帖子类型创建了一个全新的分类法。但还是一样的问题。

这里是我创建分类的代码:

        register_taxonomy("cstesttaxonomy", 
        array(\'myposttype\'),
        array(
            "label"             => _n(\'Testtaxonomie\', \'Testtaxonomies\', 2, \'cs-poedit\'),
            \'public\'            => false,
            \'labels\' => array(
                \'name\'          => _n(\'Testtaxonomie\', \'Testtaxonomies\', 2, \'cs-poedit\'),
                \'sigular_name\'  => _n(\'Testtaxonomie\', \'Testtaxonomies\', 1, \'cs-poedit\'),
                \'menu_name\'     => _n(\'Testtaxonomie\', \'Testtaxonomies\', 1, \'cs-poedit\'),
                \'edit_item\'     => __(\'Edit testtax\', \'cs-poedit\'),
                \'view_item\'     => __(\'View testtax\', \'cs-poedit\'),
                \'update_item\'   => __(\'Update testtax\', \'cs-poedit\'),
                \'add_new_item\'  => __(\'Add new testtax\', \'cs-poedit\'),
                //                     \'new_item_name\' => \'Optionsbezeichnung\',
                \'popular_items\' => NULL,
            ),
            "hierarchical"      => false,
            "singular_label"    => _n(\'Testtaxonomie\', \'Testtaxonomies\', 1, \'cs-poedit\'),
            \'rewrite\'           => true,
            \'show_ui\'           => true,

            \'show_in_nav_menus\'  => true,
            \'show_admin_column\' => true,
        )
    ); 
然后,我将此分类的管理视图添加到我的管理菜单:

private function initAdminHooks() {
    add_action( \'admin_menu\', array($this, \'initAdminMenu\'));
}

public function initAdminMenu() {
    add_menu_page(\'MyMenu\', \'MyMenu\', \'edit_posts\', \'cs_mymenu\', \'show\', plugins_url(\'myplugin/myicon_16x16.ico\'), 3);
    //...
    add_submenu_page(\'cs_mymenu\', _n(\'TestTax\', \'TestTax\', 2, \'cs-poedit\'),_n(\'TestTax\', \'TestTaxes\', 2, \'cs-poedit\'), \'manage_options\', \'edit-tags.php?taxonomy=cstesttaxonomy&post_type=myposttype\', false);
}   
然后在administration视图中,我想添加一个新的分类法,在保存分类法时,我想写一个日志(如果这样做有效,我想向分类法添加自己的字段,并将自定义值保存到自定义数据库表)

我的类可以做到这一点并处理save方法:

if ( ! defined ( \'ABSPATH\' ) ) {
    exit;
}

class RS_IB_MyTest {

public function mytest1( $term_id = 0, $tt_id =\'\') {
    write_log("Stest1");
}
public function mytest2( $term_id, $tt_id =\'\',$asd = \'\' ) {
    write_log("Stest2");
}        

public function __construct() {
    write_log("construct");
    add_action( \'create_cstesttaxonomy\', array($this, \'mytest1\'), 10, 2 );        

    add_action( \'edit_term\', array( $this, \'mytest2\' ), 10, 3 );
}
}
new RS_IB_MyTest();
但仍然只有“edit\\u term”钩子中的方法被正确激发。

1 个回复
SO网友:Carsten Schmitt

我发现我的失败。。。几个月前,我在代码中添加了以下行:

if(!(defined(\'DOING_AJAX\') && DOING_AJAX)) {
    include_once \'mytestfile.php\';
}
在此文件中,我添加了创建术语的操作。。。有了这一行,我想防止加载一些我在使用AJAX时不需要的文件。。。但是wordpress正在使用AJAX创建一个新术语。。

现在我删除了这个if语句,一切都很好。。。

很抱歉我为这次愚蠢的失败浪费了你的时间。。但也许有人也有同样的问题,并且对我的帖子感到高兴:-D

相关推荐

GET_THE_TERMS与wp_GET_POST_TERMS中的奇怪结果

我正在尝试制作一个面包屑函数,但有一个小问题。。。使用时:$categories = get_the_terms( $post->ID, \'product_cat\' ); 我得到了一个循环中使用的类别数组,等等。唯一的问题是它是按字母顺序排列的。(我希望它按层次顺序排列。)经过一番挖掘,我发现了一种替代方法,即使用wp\\u get\\u post\\u terms(),但我肯定遗漏了一些东西,因为当我使用此方法时:$categories = wp_get_post_terms( $p