web-dev-qa-db-ja.com

ウィジェット:管理者側のカスタム投稿タイプ投稿リストドロップダウン

ウィジェット:管理者側で以下の機能を持つカスタムウィジェットを作っています。

  1. 3つのテキストフィールド
  2. タイトルで投稿を選択するための2つのドロップダウンメニュー(両方とも単一のカスタム投稿タイプから)

今、ドロップダウンの代わりに、ユーザーは投稿ID#をテキストフィールドに入力する必要があります。ウィジェットは投稿IDを使用して、正しい投稿から正しいデータを取得し、フロントエンドにうまく表示します。管理者にドロップダウンから投稿のタイトルを選択させ、それからウィジェットに選択された投稿のID#を変数に格納させて情報を保存させることができる必要があります。

これまでの私のコードこれはドロップダウンメニューです。私がウェブ上で見つけたさまざまな例から私が一緒に石畳を作ったもの。私は近いと思いたいのですが、本当に困惑しています。

<?php
$selected = isset( $values['$bookid1'] ) ? esc_attr( $values['$bookid1'] ) : ''; 
global $post;
$args = array('post_type' => 'bookdetail','post_status' => 'publish');
$myposts = get_posts( $args );
echo '<select name="bookid1" id="bookid1">';
foreach( $myposts as $post ) :
    setup_postdata($post);
    $bookid1 = $post->ID;   
    $displaytitle = substr( get_the_title($post->ID), 0, 50);
    echo '<option value="' . $bookid1 . '"' .  selected( $selected, $bookid1 ) .'>' . $displaytitle . '</option>';
endforeach;
echo '</select>';
?>

そう...
adminユーザーがドロップダウンから選択した投稿の投稿ID#を$bookid1に保存するにはどうすればよいですか。
ウィジェットコードの "save data"セクションにその変数と選択を保存するにはどうすればいいですか?

私はコミュニティが提供することができるあらゆる助けに感謝します。

1
Joe

これが私が発見して使用したものです。

function custom_posttype_dropdown($name, $selected)
{       
    $out = "";
    $posts = get_posts(
        array(
            'post_type'  => 'bctap_templates',
            'numberposts' => -1
        )
    );
    if($posts )
    {

        $out = '<select name="'.$name.'" ><option>Select a Template</option>';
        foreach( $posts as $p )
        {
            if ($p==$selected)
            {
                $selected = "selected = 'selected'";
            }
            else
            {
                $selected = "";
            }
            $out .= '<option value="' . $p->ID . '" '.$selected.'>' .$p->post_title  . '</option>';
        }
        $out .= '</select>';
    } 
    else
    {
        $out = '<select name="'.$name.'" value="x" ><option>Select a Option</option>';
        foreach( $posts as $p )
        {               
            $out .= '<option value="x" '.$selected.'>None Created Yet.</option>';
        }
        $out .= '</select>';
    }
    return $out;
}

//to call
echo custom_posttype_dropdown($name, $selected);
1
Hudson Atwell