TinyMCE自定义按钮从自定义字段检索值

时间:2016-11-15 作者:MKay

我正在创建一个插件,在WordPress admin中为默认的TinyMCE编辑器添加一个自定义按钮。

下面的代码构建了这个简单的插件

mkay-tinymce-extra-button.php

function mkay_enqueue_plugin_script( $plugin_array ){
    $plugin_array[\'subscriptionPlugin\'] = plugin_dir_url( __FILE__ ) . \'mkay-tinymce-extra-buttons.js\';
    return $plugin_array;
}
add_filter( \'mce_external_plugins\', \'mkay_enqueue_plugin_script\' );

function mkay_register_buttons_editor( $buttons ){
    array_push( $buttons, \'subscription\' );
    return $buttons;
}
add_filter( \'mce_buttons\', \'mkay_register_buttons_editor\' );

mkay-tinymce-extra-buttons.js

(function(){
tinymce.create(\'tinymce.plugins.subscriptionPlugin\', {
    init: function(editor, url){
        editor.addButton(\'subscription\', {
            title: \'Link per l\\\'iscrizione\',
            cmd: \'subscriptionCmd\',
            icon: false,
            text: \'Link iscrizione\'
        });

        editor.addCommand(\'subscriptionCmd\', function(){
            var selectedContent = editor.selection.getContent();
            var box = \'<a href="/iscrizione/?data_corso=[custom field value]" class="subscription-link">\'+selectedContent+\'</div>\';
            editor.execCommand(\'mceInsertContent\', 0, box);
        });
    }
});

tinymce.PluginManager.add(\'subscriptionPlugin\', tinymce.plugins.subscriptionPlugin);
})();
到目前为止,该插件似乎运行良好。

现在我需要从帖子中获取一个自定义字段的值,并将其放在js文件中的位置。然后,如果可能,仅当文章是草稿或已发布且自定义字段不为空时,才显示自定义按钮。

有人知道吗?非常感谢您的帮助。

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

不要在用户点击按钮时查找自定义字段值,而是将[自定义字段值]更改为短代码名称(可能是“[mkay\\u subscription\\u button\\u value]”?)然后创建shortcode 可以用帖子的自定义元替换该键的值。类似这样:

function 246286_display_custom_field( $atts ) {
    $data = get_post_meta( get_the_ID(), \'mkay_custom_field\', true );
    return $data;
}
add_shortcode( \'mkay_subscription_button_value\', \'246286_display_custom_field\' );
这样做的价值在于:如果在按下按钮后帖子的自定义元发生变化,页面上的输出仍然有效。

相关推荐

使用wp_ins_post()插入新帖子后,该帖子对wp_Query不可见,但同样的WP_Query也适用于从wp-admin面板插入的帖子

制作脚本,在特定条件下向数据库添加新的自定义帖子。一切正常。但有一种流动。在用我的脚本将帖子写入数据库后,我无法用WP\\u查询将其提取出来。如果我直接从wp管理面板添加帖子,所有WOKR都可以。但如果我用脚本添加帖子,我无法用WP\\u查询提取它们。新添加的帖子显示在wp admin面板的帖子列表中,包含所有所需的值,这些都很酷,但对wp\\U查询不可见。只有在我在wp管理面板中更改帖子的任何自定义字段并按下更新按钮后,它才可见。参考页面后,一切都开始完美工作。新帖子似乎已经发布,当我列出所有此类可用帖