管理函数中的ECHO或PRINT_r

时间:2013-03-31 作者:Steffy Kristiensen

我目前正在使用我的第一个插件(处理我的CPT),并且正在保存元框的值。

我希望添加下划线(_) 到元键,以便它隐藏在自定义字段部分。

我在保存数据时遇到了一些麻烦_ 已添加(如果没有_).

因此,我尝试研究元数组中的内容,但我无法获得echoprint_r 在我的插件中的一个函数中,该函数将打印在我的管理页面上。

我写了以下内容

function ccp_portfolio_item_info_meta_box_save( $post_id, $post ) {

    if ( !isset( $_POST[\'ccp-portfolio-item-info-nonce\'] ) || !wp_verify_nonce( $_POST[\'ccp-portfolio-item-info-nonce\'], basename( __FILE__ ) ) )
        return;

    $meta = array(
        \'_portfolio_item_url\' => esc_url( $_POST[\'ccp-portfolio-item-url\'] )
    );

    print_r($meta);
    // ccp_split_meta_save ($meta, $post_id, $post); // calling my function to split the metas
}
但那不会打印我的$meta 在我的管理页面顶部,我做错了什么?

@布拉索菲洛

谢谢你的回答

首先,我的表格如下

function ccp_portfolio_item_info_meta_box_display( $post, $metabox ) {

    wp_nonce_field( basename( __FILE__ ), \'ccp-portfolio-item-info-nonce\' ); ?>

    <p>
        <label for="ccp-portfolio-item-url"><?php _e( \'Project <abbr title="Uniform Resource Locator">URL</abbr>\', \'custom-content-portfolio\' ); ?></label>
        <br />
        <input type="text" name="ccp-portfolio-item-url" id="ccp-portfolio-item-url" value="<?php echo esc_url( get_post_meta( $post->ID, \'_portfolio_item_url\', true ) ); ?>" size="30" tabindex="30" style="width: 99%;" />
    </p>
    <?php

    /* Allow devs to hook in their own stuff here. */
    do_action( \'ccp_item_info_meta_box\', $post, $metabox );
}
那么我的保存功能是:

function ccp_portfolio_item_info_meta_box_save( $post_id, $post ) {

    if ( !isset( $_POST[\'ccp-portfolio-item-info-nonce\'] ) || !wp_verify_nonce( $_POST[\'ccp-portfolio-item-info-nonce\'], basename( __FILE__ ) ) )
        return;

    $meta = array(
        \'_portfolio_item_url\' => esc_url( $_POST[\'ccp-portfolio-item-url\'] )
    );


    ccp_split_meta_save ($meta, $post_id, $post); // calling my function to split the metas
}
到目前为止一切都很好,当我打印$金属时,它显示了正确的东西

然后在前面的函数中,我称之为

function ccp_split_meta_save ($meta, $post_id, $post) {

echo \'je suis dans ccp_split_meta_save <br />\';
print_r($meta);
    //exit();

    foreach ( $meta as $meta_key => $new_meta_value ) {

            /* Get the meta value of the custom field key. */
            $meta_value = get_post_meta( $post_id, $meta_key, true );

            echo \'<br />la meta key est \'.$meta_key.\'</ br>\';
            echo \'<br />la meta value  est \'.$meta_value.\'</ br>\';
            // exit();

            /* If there is no new meta value but an old value exists, delete it. */
            if ( current_user_can( \'delete_post_meta\', $post_id, $meta_key ) && \'\' == $new_meta_value && $meta_value )
                {//delete_post_meta( $post_id, $meta_key, $meta_value );
                echo \'<br />je suis dans delete <br />\';
                }

            /* If a new meta value was added and there was no previous value, add it. */
            elseif ( current_user_can( \'add_post_meta\', $post_id, $meta_key ) && $new_meta_value && \'\' == $meta_value )
            {
                //{add_post_meta( $post_id, $meta_key, $new_meta_value, true );
                //echo \'<br /> c est une nouvelle meta value <br />\'; exit();
                echo \'<br />je suis dans add <br />\';
            }   
                //}

            /* If the new meta value does not match the old value, update it. */
            elseif ( current_user_can( \'edit_post_meta\', $post_id, $meta_key ) && $new_meta_value && $new_meta_value != $meta_value )
            {   //update_post_meta( $post_id, $meta_key, $new_meta_value );
                echo \'<br />je suis dans update <br />\';
            }
            else 
            {
            echo \'<br /><b>je suis nul part</b> <br />\';
            echo \'add_post_meta : \' .current_user_can( \'add_post_meta\', $post_id, $meta_key ).\'<br />\';
            }

    exit();
    }

}
正如您所看到的,这是一个工作/denug函数,因为我已经放置了一些指针来查看数据的位置

奇怪的是如果我

$元=数组(\'portfolio\\u item\\u url=>esc\\u url($\\u POST[\'ccp-portfolio-item-url\'))

然后,elseif(当前用户\\u can(\'add\\u post\\u meta\',$post\\u id,$meta\\u key)&&$新的_元_值&&;“”==$meta\\u值),因此会向数据库中添加一个新条目

如果我有

$元=数组(“\\u portfolio\\u item\\u url”=>esc\\u url($\\u POST[\'ccp-portfolio-item-url])

然后是我最后一次,这意味着什么都没有

如果我打印$meta\\u value=get\\u post\\u meta($post\\u id,$meta\\u key,true);

然后它会返回一个空值,这样我就可以

        /* If a new meta value was added and there was no previous value, add it. */
        elseif ( current_user_can( \'add_post_meta\', $post_id, $meta_key ) && $new_meta_value && \'\' == $meta_value )
        {
            //{add_post_meta( $post_id, $meta_key, $new_meta_value, true );
            //echo \'<br /> c est une nouvelle meta value <br />\'; exit();
            echo \'<br />je suis dans add <br />\';
        }   
但不是的

我只是不明白为什么只加下划线会带来麻烦

提前感谢您的帮助

@toscho,很抱歉,我不太明白如何更新我的问题,但看起来我发现了。。谢谢你,也很抱歉我太鲁莽了

1 个回复
SO网友:brasofilo

save_post 钩子被执行,页面被重定向,因此您无法看到print_r 输出

如果你负担得起,一个简单的方法是wp_die() 就在print_rvar_dump.

也可以检查其他调试方法,如FirePHP.

结束

相关推荐

我可以为远程博客在本地托管WP-admin吗?

我遇到了一个问题,我的主题在上传时创建了一堆大小不同的图像(因为这是应该的),而我的服务器会定期在上传过程中阻塞。这导致了一堆“MySQL服务器已经离开了…”问题,我最终得到的是不包含任何数据的媒体上传。预算中没有专用服务器。而且,我的web主机并不热衷于为我的帐户提供更多RAM。因此,从我当前的托管解决方案中迁移不是一种选择。然而,我办公室里有一台测试服务器,有4个CPU和16GB的RAM,我想,“嘿,有没有办法在本地托管所有的WP管理功能,只需将更改推送到远程服务器?”如果有人问到这一点,我会向你道歉