エディターなしでwpLinkを使用する方法


11

リンクを追加するためのテーマオプションを作成したいと思います。wpエディターが存在する場合、これらのスクリプトをロードしてダイアログをトリガーすることは正常に機能します。

wp_enqueue_script('wplink');
wp_enqueue_script('wpdialogs');
wp_enqueue_script('wpdialogs-popup');
wp_enqueue_style('wp-jquery-ui-dialog');
wp_enqueue_style('thickbox');

wp_editor('', 'unique_id', array('editor_class'=>'hidden'));



$('.add-link').on("click", function(e){
    e.preventDefault();

      wpLink.open();
      return false;
});

しかし、エディタが存在せずにリンクダイアログボックスを開くにはどうすればよいですか?

これは私が求めているものです

ここに画像の説明を入力してください ここに画像の説明を入力してください


2
それはすべてエディターにかなり密接に結びついており、リンクダイアログはエディタークラスのメソッドによって構築され、それを呼び出すスクリプトにはエディターインスタンスが必要です。
ミロ

エディターがないとどういう意味ですか?どこに食べたいですか?
Pmpr 2016年

@Trix in theme settings
Benn

独自のフィールドを作成するか、高度なカスタムフィールドの関係フィールド(advancedcustomfields.com/resources/relationshipまたはカスタムフィールドスイートの関係フィールド:docs.customfieldsuite.com/field-types/relationship.html
MikeNGarrett

回答:


7

これを行う倫理的な方法はありません。しかし、これを行う方法はまだあります。WordPressはwpLinkスクリプトを作成しましたが、エディターは存在するが、エディターが存在しない場合でもWordPressハンドルは引き続き有効であることに留意してください(良いこと)

この例を検討し、フッターのフロントエンドで使用していると想定します。

まず、重要なスタイルとスクリプトをエンキューします。

function enqueue_scripts_209490() {
    wp_enqueue_script('wplink');
    wp_enqueue_style( 'editor-buttons' );
}
add_action('wp_enqueue_scripts', 'enqueue_scripts_209490');

この関数をフッターにフックしますインラインコメントを読みます

function display_wplink_html_209490() {
    //Our textarea, click to open the link edior and insert the link in same editor
    echo '<textarea id="example_209490"></textarea>';

    // Require the core editor class so we can call wp_link_dialog function to print the HTML.
    // Luckly it is public static method ;)
    require_once ABSPATH . "wp-includes/class-wp-editor.php";
    _WP_Editors::wp_link_dialog(); ?>

    <script type="text/javascript">
        /* We need ajaxurl to send ajax to retrive links */
        var ajaxurl = "<?php echo admin_url( 'admin-ajax.php'); ?>";
        jQuery(document).ready(function (){
            jQuery('#example_209490').click(function (){
                wpLink.open('example_209490'); /* Bind to open link editor! */
            });
        })
    </script><?php
}
add_action('wp_footer', 'display_wplink_html_209490');

注: jsエラーsetUserSettingが定義されておらず、ユーザーがログインしていないときにAJAX応答がないため、 ユーザーがログインしていない場合は機能しません。


どういうわけか、私はこれをすべて_WP_Editorsコードなしで以前に機能させていましたが、壊れました。あなたの答えがその日を救った-ありがとう!
random_user_name 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.