Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wordpress从选择项保存多个值_Wordpress_Save_Custom Post Type_Meta Boxes_Customcolumn - Fatal编程技术网

wordpress从选择项保存多个值

wordpress从选择项保存多个值,wordpress,save,custom-post-type,meta-boxes,customcolumn,Wordpress,Save,Custom Post Type,Meta Boxes,Customcolumn,我已经创建了一个元框,其中包含一个多选择项,该项的值来自自定义帖子类型 add_action("add_meta_boxes", "palinsesto_box"); function palinsesto_box() { add_meta_box("palinsesto-meta", "Speakers", "palinsesto_manager_meta_options", "palinsesto", "side");} function palinsesto_manager_m

我已经创建了一个元框,其中包含一个多选择项,该项的值来自自定义帖子类型

add_action("add_meta_boxes", "palinsesto_box");

function palinsesto_box() {
add_meta_box("palinsesto-meta", "Speakers",   "palinsesto_manager_meta_options", "palinsesto",   "side");}

function palinsesto_manager_meta_options($post)
{
wp_nonce_field( 'radio_schedule', 'schedule_noncename' );
echo '<label for="speaker_id">';
_e("Speaker", 'speaker_id' );
echo '</label> ';
$args = array( 'post_type' => 'speaker');
$loop = new WP_Query( $args );
echo '<select name="speaker_id[]" id="speaker_id" multiple="multiple">';
foreach($loop->posts as $dj):
    if($dj->ID == get_post_meta( $post->ID, 'speaker_id', true ))
    {
        $select = 'selected';
    }else{
    $select = '';
}
echo '<option value="'.$dj->ID.'" '.$select.'>'.$dj->post_title.'</option>';
endforeach;
echo '</select>';
echo '<p>Tieni premuto CTRL per selezionare più speakers</p>';
}
add_操作(“add_meta_框”、“palinseto_框”);
功能页存储框(){
添加元框(“页面存储元”、“扬声器”、“页面存储管理器元选项”、“页面存储”、“侧边”);}
功能页面存储管理器元选项($post)
{
wp_nonce_字段('radio_schedule','schedule_noncename');
回声';
_e(“发言人”,“发言人id”);
回声';
$args=数组('post_type'=>'speaker');
$loop=新的WP_查询($args);
回声';
foreach($loop->发布为$dj):
如果($dj->ID==get\u post\u meta($post->ID,'speaker\u ID',true))
{
$select='selected';
}否则{
$select='';
}
回显“.$dj->post_标题”;
endforeach;
回声';
回声“Tieni premuto CTRL每一个语音扬声器”

; }
这部分有效!现在,我将保存所选的值并将其显示在自定义列中,这里有一些工作

add_action('save_post', 'save_palinsesto_manager_meta_options');
function save_palinsesto_manager_meta_options($post_id)
{global $post;
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ){
    //if you remove this the sky will fall on your head.
    return;
}else{
    if( isset( $_POST['speaker_id'] ) ) {  
    update_post_meta( $post_id,'speaker_id', esc_attr( $_POST['speaker_id'] ) );  
}
}
}

add_filter('manage_palinsesto_posts_columns', 'columns_palinsesto');
function columns_palinsesto($old_columns)
{
$new_columns = array(
    'cb'     => '<input type="checkbox">',
    'img'    => 'Immagine',
    'title'  => __('Palinsesto'),
    'conduce' => 'Conduce',

);
return array_merge( $new_columns, $old_columns );
}

add_action('manage_palinsesto_posts_custom_column', 'get_palinsesto_columns',
10, 2);
function get_palinsesto_columns($col, $post_id)
{global $post;

$conduce=get_post_meta( $post_id,'speaker_id',$value );


switch($col) {
case 'img':
    if(has_post_thumbnail($post_id)) {
        echo get_the_post_thumbnail($post_id);
    } else {
        echo 'Nessuna immagine!';
    }
    break;
case 'conduce':

    echo $conduce;
    break;
}
}
add_action('save_post'、'save_palinsesto_manager_meta_options');
功能保存页面存储管理器元选项($post\U id)
{全球$员额;
if(已定义('DOING_AUTOSAVE')&&DOING_AUTOSAVE){
//如果你去掉这个,天空就会落到你的头上。
返回;
}否则{
如果(isset($_POST['speaker_id']){
更新发布元($发布id、'speaker\u id',esc\u attr($发布['speaker\u id']);
}
}
}
添加_过滤器('manage_palinseto_posts_columns','columns_palinseto');
函数列\u栏存储($old\u列)
{
$new_columns=数组(
“cb'=>”,
“img”=>“Immagine”,
“title'=>”(“palinesto”),
“conduce”=>“conduce”,
);
返回数组合并($new\u columns,$old\u columns);
}
添加操作('manage_palinsesto_posts_custom_column'、'get_palinsesto_columns',
10, 2);
函数get_palinsesto_列($col,$post_id)
{全球$员额;
$conduce=get_post_meta($post_id,'speaker_id',$value);
交换机($col){
案例“img”:
如果(有帖子缩略图($帖子id)){
echo获取发布缩略图($post\u id);
}否则{
回声“尼苏娜·伊马吉!”;
}
打破
案例“有助于”:
有助于;
打破
}
}
这部分代码只返回一个值并显示单词数组或数字……您能帮我吗???

我建议您阅读:

$post\u type\u posts\u custom\u列

metabox、保存和检索选项我知道它正在工作:

add_action("add_meta_boxes", "palinsesto_box");

function palinsesto_box() {
    add_meta_box("palinsesto-meta", "Speakers",   "palinsesto_manager_meta_options", "post", "side", 'high' );
}

function palinsesto_manager_meta_options( $post ) {

    wp_nonce_field( 'palinsesto_manager_meta_options', 'palinsesto_manager_meta_options_nonce' );

    echo '<label for="speaker_id">';
        _e("Speaker", 'speaker_id' );
    echo '</label> ';
    $args = array( 'post_type' => 'post');
    $loop = new WP_Query( $args ); 


    $speaker_id_values = get_post_meta( $post->ID, '_speaker_ids', true ); ?>

    <?php if ( $loop->have_posts() ): ?>

        <select name="speaker_id[]" id="speaker_id" multiple="multiple">

            <?php while( $loop->have_posts() ): $loop->the_post();  ?>
                <?php 
                    $selected = ( in_array( get_the_ID(), $speaker_id_values ) ) ? 'selected="selected"' :  '';
                ?>
                <option value="<?php the_ID() ?>" <?php echo $selected; ?>><?php the_title(); ?></option>

            <?php endwhile; ?>
        </select>

        <p>Tieni premuto CTRL per selezionare più speakers</p>

    <?php endif ?>

   <?php
}
add_action('save_post', 'save_palinsesto_manager_meta_options');
function save_palinsesto_manager_meta_options($post_id) {


    // Check if our nonce is set.
    if ( ! isset( $_POST['palinsesto_manager_meta_options_nonce'] ) )
        return $post_id;

    $nonce = $_POST['palinsesto_manager_meta_options_nonce'];

    // Verify that the nonce is valid.
    if ( ! wp_verify_nonce( $nonce, 'palinsesto_manager_meta_options' ) )
        return $post_id;

    // If this is an autosave, our form has not been submitted, so we don't want to do anything.
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
        return $post_id;

    // Check the user's permissions.
  if ( 'page' == $_POST['post_type'] ) {

    if ( ! current_user_can( 'edit_page', $post_id ) )
        return $post_id;

  } else {

    if ( ! current_user_can( 'edit_post', $post_id ) )
        return $post_id;

  }


    if ( isset( $_POST['speaker_id'] ) ) {

        $sanitized_data = array();

        $data = (array) $_POST['speaker_id'];

        foreach ($data as $key => $value) {

            $sanitized_data[ $key ] = (int)strip_tags( stripslashes( $value ) );

        }

        update_post_meta( $post_id, '_speaker_ids', $sanitized_data );

    }

}

您可以改进代码。

您尝试过代码吗?您的代码示例可以使用一些缩进,使其更易于阅读。照顾好那些你需要帮助的读者!“保存”选项代码有效,但该列始终返回单词arrayit。如果您忘记了“;”,则该选项有效在$speaker\u id=get\u post\u meta($post\u id,''u speaker\u id',true)之后,如果我删除speaker\u id循环,一切都正常,我不知道为什么我在这里测试了它,单独测试,使用多个元盒测试,它对我有效,所有这些都显示在这里。请编辑您的问题并粘贴代码,以便我们可以尝试查找错误。
add_filter( 'manage_edit-speaker_columns', 'set_custom_edit_speaker_columns' );
add_action( 'manage_speaker_posts_custom_column' , 'custom_speaker_column', 10, 2 );

function set_custom_edit_speaker_columns($columns) {
    unset( $columns['author'] );
    $columns['speaker_id'] = __( 'Speaker', 'your_text_domain' );

    return $columns;
}

function custom_speaker_column( $column, $post_id ) {
    switch ( $column ) {

        case 'speaker_id' :

            $speaker_ids = get_post_meta( $post_id, '_speaker_ids', true )

            if ( count( $speaker_ids ) > 0 ) {
                foreach ( $speaker_ids as $speaker_id ) {
                     echo get_the_title($speaker_id) . ' ';   
                }    
            } else {
                echo 'Nothing here';
            }

            break;

    }
}