小部件:管理员端的自定义帖子类型帖子列表下拉列表

时间:2012-02-21 作者:Joe

Widget: 我正在制作一个自定义小部件,在管理端具有以下功能。

现在,用户必须在文本字段中输入帖子ID,而不是下拉菜单,以按标题选择帖子(均来自单个自定义帖子类型)。小部件使用post ID从正确的post中获取正确的数据,并将其很好地显示在前端。我需要让管理员从下拉列表中选择帖子标题,然后让小部件将所选帖子的ID#存储在变量中并保存信息。

My Code So Far 这只是为了下拉列表;我从网上找到的各种例子中拼凑出的东西。我想我已经很接近了,但我真的被难住了。

<?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>\';
?>
所以
如何存储$bookid1 管理员用户从下拉列表中选择的帖子的帖子ID
如何在小部件代码的“保存数据”部分保存该变量和选择?

我感谢社区能提供的任何帮助。

1 个回复
SO网友:Hudson Atwell

以下是我发现和使用的内容,也许它会帮助您:

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);

结束