在 Wordpress 中保存自定义元数据框的数据

ran*_*han 0 wordpress

我在编辑链接页面中添加了一个元框,无论我在该字段中放入什么,我都无法保存数据。如何只更新元框而不将数据保存在数据库中?这是我的代码:

// backwards compatible
add_action( 'admin_init', 'blc_add_custom_link_box', 1 ); 

/* Do something with the data entered */
add_action( 'save_link', 'blc_save_linkdata' );

/* Adds a box to the main column on the Post and Page edit screens */
function blc_add_custom_link_box() {
    add_meta_box( 
        'backlinkdiv',
        'Backlink URL',
        'blc_backlink_url_input',
        'link',
        'normal',
        'high'
    );
}

/* Prints the box content */
function blc_backlink_url_input( $post ) {
  // Use nonce for verification
  wp_nonce_field( plugin_basename( __FILE__ ), 'blc_noncename' );

  // The actual fields for data entry
  echo '<input type="text" id="backlink-url" name="backlink_url" value="put your backlink here" size="60" />';

  #echo "<p> _e('Example: <code>http://Example.org/Linkpage</code> &#8212; don&#8217;t forget the <code>http://</code>')</p>";
}
Run Code Online (Sandbox Code Playgroud)

如何保存或更新metabox输入字段的数据?只有数据应该在元框中更新。它不应通过任何类型的自定义字段保存在数据库中。

Vid*_*edo 5

我认为保存为自定义字段实际上是一个好主意,只有一个不会出现在自定义字段框中。您可以通过在自定义字段名称的开头添加“_”(即“_my_custom_field”而不是“my_custom_field”)来完成后者。

这是一个用于保存元框数据的示例函数。我更改了名称以匹配您上面的代码。

    <?php

    function blc_save_postdata($post_id){

      // Verify this came from the our screen and with proper authorization,
      // because save_post can be triggered at other times
      if ( !wp_verify_nonce( $_POST['blc_noncename'], plugin_basename(__FILE__) )) {
        return $post_id;
      }

      // Verify if this is an auto save routine. If it is our form has not been submitted, so we dont want
      // to do anything
      if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) 
        return $post_id;


      // Check permissions to edit pages and/or posts
      if ( 'page' == $_POST['post_type'] ||  'post' == $_POST['post_type']) {
        if ( !current_user_can( 'edit_page', $post_id ) || !current_user_can( 'edit_post', $post_id ))
          return $post_id;
      } 

      // OK, we're authenticated: we need to find and save the data
      $blc = $_POST['backlink_url'];

      // save data in INVISIBLE custom field (note the "_" prefixing the custom fields' name
      update_post_meta($post_id, '_backlink_url', $blc); 

    }

    //On post save, save plugin's data
    add_action('save_post', array($this, 'blc_save_postdata'));
            ?>
Run Code Online (Sandbox Code Playgroud)

应该就是这样。我使用这个页面作为参考:http : //codex.wordpress.org/Function_Reference/add_meta_box