categories - How to insert category to post via php?

admin2025-01-07  5

I can't get this to work. I have a page where users can submit their posts. There, ideally I want to show all the categories and let them choose via a dropdown the category to assign the post. I couldn't manage this as I am a newbie regarding PHP so I decided to go step by step and first start with adding an empty input field where users can just add a random text that will become the category of that post.

To do so, I have done the following:

                   if(isset($_POST['entry']) AND !$_POST['entry'] == ""):
                        $my_post = array();
                        $my_post['post_title'] = $_POST['title'];
                        $my_post['post_content'] = $_POST['entry'];
                        $my_post['post_status'] = 'publish';

                        $cat_name = sanitize_text_field($_POST['newcat']);
                        $my_post ['cat_name'] = $cat_name; 

                        $my_post['post_author'] = get_current_user_id();;

                        // add post to database
                        $id = wp_insert_post( $my_post );
                        endif;

So, as you can see, I am trying to add the category by linking it to $my_post and the "newcat" input field.

And the form:

<form action="" method="post" role="form">

<label for="newcat">Category Name</label>
<input type="text" name="newcat" value="" />

</form>

Post title and content are working (removed it from the code above), but category isn't working at all.

Can someone help me and explain what I am doing wrong?

I can't get this to work. I have a page where users can submit their posts. There, ideally I want to show all the categories and let them choose via a dropdown the category to assign the post. I couldn't manage this as I am a newbie regarding PHP so I decided to go step by step and first start with adding an empty input field where users can just add a random text that will become the category of that post.

To do so, I have done the following:

                   if(isset($_POST['entry']) AND !$_POST['entry'] == ""):
                        $my_post = array();
                        $my_post['post_title'] = $_POST['title'];
                        $my_post['post_content'] = $_POST['entry'];
                        $my_post['post_status'] = 'publish';

                        $cat_name = sanitize_text_field($_POST['newcat']);
                        $my_post ['cat_name'] = $cat_name; 

                        $my_post['post_author'] = get_current_user_id();;

                        // add post to database
                        $id = wp_insert_post( $my_post );
                        endif;

So, as you can see, I am trying to add the category by linking it to $my_post and the "newcat" input field.

And the form:

<form action="" method="post" role="form">

<label for="newcat">Category Name</label>
<input type="text" name="newcat" value="" />

</form>

Post title and content are working (removed it from the code above), but category isn't working at all.

Can someone help me and explain what I am doing wrong?

Share Improve this question edited May 2, 2019 at 21:16 fuxia 107k38 gold badges255 silver badges459 bronze badges asked May 2, 2019 at 21:01 SiyahSiyah 1932 silver badges12 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

Please try to use this function https://codex.wordpress.org/Function_Reference/wp_dropdown_categories

wp_dropdown_categories() - Display the HTML dropdown list of categories

    <form id="category-select" class="category-select" action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get">
        <?php wp_dropdown_categories(); ?>
        <input type="submit" name="submit" value="view" />
    </form>
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1736252882a81.html

最新回复(0)