Topics Created via API Aren’t Showing
-
WordPress Version: 6.4.2
bbPress Version: 2.6.9
Link to site: Unavailable (Site created using LocalWP and still hosted locally)When I create topics through the standard frontend or backend, the new topic shows up in the forum perfectly.
However, if I create a new topic using a plugin extension I’ve cobbled together, the new topic does not show up on the front end of the website (despite it being created and visible on the back end).
The plugin written in php is as follows (thanks to work from here and here):
<?php /** * Plugin Name: bbPress API * Description: Exposing the bbPress post types to WP API. * Author: Rillien Cot * Version: 1.3.0 */ /** * Add REST API support to an already registered post type. */ add_action('init', 'register_bbp_post_types', 25); function register_bbp_post_types() { global $wp_post_types; $post_type_name = bbp_get_reply_post_type(); if (isset($wp_post_types[$post_type_name])) { $wp_post_types[$post_type_name]->show_in_rest = true; $wp_post_types[$post_type_name]->rest_base = $post_type_name; $wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller'; } $post_type_name = bbp_get_topic_post_type(); if (isset($wp_post_types[$post_type_name])) { $wp_post_types[$post_type_name]->show_in_rest = true; $wp_post_types[$post_type_name]->rest_base = $post_type_name; $wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller'; } $post_type_name = bbp_get_forum_post_type(); if (isset($wp_post_types[$post_type_name])) { $wp_post_types[$post_type_name]->show_in_rest = true; $wp_post_types[$post_type_name]->rest_base = $post_type_name; $wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller'; } // Add custom REST API endpoint for creating bbPress topic add_action('rest_api_init', 'create_bill_endpoint'); } function create_bill_endpoint() { register_rest_route('pnyx/v2', '/bill/', array( 'methods' => 'POST', 'callback' => 'create_bill', )); } function create_bill($data) { // Extract necessary data from the request $forum_id = $data['forum_id']; $topic_title = $data['topic_title']; $topic_content = $data['topic_content']; $bill_id = $data['bill_id']; // Create a new bbPress topic $topic_args = array( 'post_title' => $topic_title, 'post_content' => $topic_content, 'post_type' => bbp_get_topic_post_type(), 'post_status' => 'publish', 'post_parent' => $forum_id, // Set the post_parent to the forum ID ); $topic_id = wp_insert_post($topic_args); ?>
Basically, it exposes the Forum, Topic, and Reply post types from bbPress to standard wp-json/v2 namespace and then adds an additional endpoint (‘create_bill’) which allows me to add a new topic and associate it with a forum via ‘post_parent’. (I wonder if this is where the problem is?)
I create a new topic using the following python script:
import requests import json # Set WordPress API authentication details username = "*******" password = "**********************" auth = requests.auth.HTTPBasicAuth(username, password) # Values for new post data new_post_data = { "forum_id": 40, # <- This is a valid post id of a forum. "topic_title": "New API Topic Title", "topic_content": "Lorem ipsum content for the new topic" } # Make the POST request to create a new post wordpress_api_url = "http://pnyx.local/wp-json/pnyx/v2/bill/" response = requests.post( wordpress_api_url, auth=auth, headers={ 'Content-Type': 'application/json', }, data=json.dumps(new_post_data) )
The topic is created, and I can see it in Dashboard>>Topics>>All Topics. And I can view it by going directly to the link associated with it, but I can’t see it on the actual frontend of the forum.
I’ve deactived all other plugins and I’m still getting this issue. The only differences between the two (as far as I can tell) are the Author IP (API created topics leave this field blank, standard fills it with 127.0.0.1) and the number of voices (API created topics have 0, standard created topics have 1). All the other settings seem identical (visibilty = public, type = normal, status = open).
Any insights as to what I’m missing and how to rectify the situation are greatly appreciated, thanks!
- You must be logged in to reply to this topic.