web-dev-qa-db-ja.com

ダッシュボードにフィールドを追加してホームページの埋め込みURLを更新する

私は検索してみましたが、「ダッシュボードウィジェットを追加する」というすべての回答があまりにも多くやり過ぎようとすると複雑すぎるようです - あるいは単純すぎる(たとえばウィジェットは単にメッセージを表示し、変数を渡しません)。

メインテンプレート(ホームページ)にビデオを埋め込むためのコード行を追加しました。また、管理者がYouTubeのURLを入力し、現在埋め込まれているURLをそのURLに置き換えられるようにDASHBOARDにテキスト入力フィールドを1つにします。変数が更新されるところでは、単純なことです。誰かがこれを正確に行う方法についてステップバイステップの指示をください。

私がテンプレートに導入したコード行は以下のとおりです。

<?php
        $your_YouTube_url = 'https://www.youtube.com/watch?v=w6DW4i-mfbA';
        echo wp_oembed_get( $your_YouTube_url );
?>

私がやりたいことは、変数$ your_YouTube_urlを更新するためにダッシュボードに一つのテキスト入力フィールドを置くことです。私の強みはHTML/CSS/jsです。私は少しPHPを知っていてWPに精通していますが、専門家ではありません。私の仲間の管理者はまったく技術的ではないので、私たちは両方とも彼が毎日コードの行を更新させるよりもそのルートに行くことがより快適であると思います。 (問題の動画はYTでライブ配信されていません。または、ライブストリームのURLをそのまま使用します。)ありがとうございます。

1
code-sushi

Functions.phpファイルに以下のコードを追加すると一般設定オプションページにテキストフィールドを作成します。

add_action('admin_init', 'embed_url_initialize');

function embed_url_initialize() {

    // First, we register a section. This is necessary since all future options must belong to one. 

    add_settings_section(

        'general_settings_section',         // ID used to identify this section and with which to register options

        'Embed Url Option',                  // Title to be displayed on the administration page

        'embed_url_general_options_callback', // Callback used to render the description of the section

        'general'                           // Page on which to add this section of options

    ); 

    // Next, we will introduce the fields for toggling the visibility of content elements.

    add_settings_field( 

        'video_url',                      // ID used to identify the field throughout the theme

        'Enter Video Url',                  // The label to the left of the option interface element

        'video_url_callback',   // The name of the function responsible for rendering the option interface

        'general',                          // The page on which this option will be displayed

        'general_settings_section'         // The name of the section to which this field belongs



    );

    // Finally, we register the fields with WordPress

    register_setting(

        'general',

        'video_url'

    );
} 

/* ------------------------------------------------------------------------ *

 * Section Callbacks

 * ------------------------------------------------------------------------ */
/**

 * This function provides a simple description for the General Options page. 

 *

 * It is called from the 'embed_url_initialize' function by being passed as a parameter

 * in the add_settings_section function.

 */

function embed_url_general_options_callback() {

    echo '<p>Please enter the embed url.</p>';

} // end embed_url_general_options_callback



/* ------------------------------------------------------------------------ *

 * Field Callbacks

 * ------------------------------------------------------------------------ */

/**

 * This function renders the interface element for input embed url.

 */

function video_url_callback($args) {

    $html = '<input type="textbox" class="regular-text" id="video_url" name="video_url" value="' . get_option("video_url") .'" />';    

    echo $html;
} // end video_url_callback_callback

それから、埋め込みビデオを取得したい場所のテンプレートファイルで以下のコードを呼び出します。

<?php if(get_option('video_url')) { 
    $embed = wp_oembed_get( get_option('video_url') );
    if( $embed ) {
        echo $embed;
    } else {
        // The embed HTML couldn't be fetched
    }
 } // end if ?>
1
Lovin Nagi