Skip to:
Content
Pages
Categories
Search
Top
Bottom

help with a private plugin I am writing, please

  • @clivesmith

    Participant

    Hi,
    I am trying to create a plugin for my own use, I think the problem is a coding one.

    I have copied some of this code from a plugin and added some myself to try to create my own plugin rather than adding it to my function.php file.

    1. I have added a new record in the postmeta table with the topic ID. meta key and meta value for every topic I have in the table.

    2. I want a meta box at the backend on both the topic and reply screens, in the metabox for both screens I want to show the meta value of the associated topic.
    I have done both these

    3. I would like to be able to change this value, but only in the topic screen.

    With the code below, if I change the value in the reply screen when I update nothing changes which is great, but if I change the value in the topic screen, when I update I get a blank value returned and the original value in the table is also removed.
    When I create a new topic I would also like to populate the meta table.

    */

    class bbPress_add_meta_fields {

    /**
    * Construct.
    */

    private $match_m_fields = array();
    public function __construct() {
    if ( is_admin() ) {
    add_action( ‘load-post.php’, array( $this, ‘init_metabox’ ) );
    add_action( ‘load-post-new.php’, array( $this, ‘init_metabox’ ) );
    $this->match_m_fields = array(‘topic’, ‘reply’);
    }
    }

    /**
    * Meta box initialization.
    */
    public function init_metabox() {
    add_action( ‘add_meta_boxes’, array( $this, ‘add_metabox’ ) );
    add_action( ‘save_post’, array( $this, ‘save_metabox’ ), 10, 2 );
    }

    /**
    * Adds the meta box.
    */
    public function add_metabox() {
    add_meta_box(
    ‘bbp_m_field_metabox’,
    __(‘Twitter name’, ‘textdomain’ ),
    array( $this, ‘render_metabox’ ),
    ‘topic’, ‘side’, ‘high’
    );
    add_meta_box(
    ‘bbp_m_field_metabox’,
    __( ‘Twitter name’, ‘textdomain’ ),
    array( $this, ‘render_metabox’ ),
    ‘reply’, ‘side’, ‘high’
    );

    }

    /**
    * Renders the meta box.
    */
    public function render_metabox( $post ) {
    // Add nonce for security and authentication.
    wp_nonce_field( ‘custom_nonce_action’, ‘custom_nonce’ );

    // get the topic id
    $post_id = get_the_ID();
    $reply_topic_id = bbp_get_reply_topic_id( $post_id );
    // get value from table
    $twitval = get_post_meta( $reply_topic_id, ‘bbp_twitname’, true );
    echo $twitval;
    echo ‘<br><label for=”bbp_twitname”>Twitter Name</label><br>’;
    echo ‘<input type=”text” name = “bbp_twitname” value= “‘ . $twitval .’”>’;
    //echo ‘<input type=”submit” value=”Submit” />’;

    add_action ( ‘bbp_new_topic’, ‘bbp_save_extra_fields’, 10, 2 );
    add_action ( ‘bbp_edit_topic’, ‘bbp_save_extra_fields’, 10, 2 );

    function bbp_save_extra_fields($reply_topic_id,$twitval) {
    if (isset($_POST) && $_POST[‘bbp_twitname’]!=”)
    update_post_meta( $reply_topic_id, ‘bbp_twitname’, $twitval );
    }
    }

    /**
    * Handles saving the meta box.
    *
    * @param int $reply_topic_id Post ID.
    * @param WP_Post $post Post object.
    * @return null
    */

    public function save_metabox( $reply_topic_id) {
    // Add nonce for security and authentication.
    $nonce_name = isset( $_POST[‘custom_nonce’] ) ? $_POST[‘custom_nonce’] :”;
    $nonce_action = ‘custom_nonce_action’;

    // Check if nonce is set.
    if ( ! isset( $nonce_name ) ) {
    return;
    }

    // Check if nonce is valid.
    if ( ! wp_verify_nonce( $nonce_name, $nonce_action ) ) {
    return;
    }

    // Check if user has permissions to save data.
    if ( ! current_user_can( ‘edit_post’, $reply_topic_id ) ) {
    return;
    }

    // Check if not an autosave.
    if ( wp_is_post_autosave( $reply_topic_id ) ) {
    return;
    }

    // Check if not a revision.
    if ( wp_is_post_revision( $reply_topic_id ) ) {
    return;
    }

    // Check to match the slug
    if(!in_array($post->post_type, $this->match_m_fields)){
    // return;
    }

    $meta_box_text_value = $twitval;

    if(isset($_POST[“bbp_twitname”])) {
    $meta_box_text_value = $_POST[“bbp_twitname”];
    }

    update_post_meta($reply_topic_id, ‘bbp_twitname’, $twitval);
    }

    /**
    * is_edit_page
    * function to check if the current page is a post edit page
    */

    public function is_edit_page($new_edit = null){
    global $pagenow;
    //make sure we are on the backend
    if (!is_admin()) return false;
    if($new_edit == “edit”)
    return in_array( $pagenow, array( ‘post.php’, ) );
    elseif($new_edit == “new”) //check for new post page
    return in_array( $pagenow, array( ‘post-new.php’ ) );
    else //check for either new or edit
    return in_array( $pagenow, array( ‘post.php’, ‘post-new.php’ ) );
    }

    }

    new bbPress_add_meta_fields();

  • You must be logged in to reply to this topic.
Skip to toolbar