I want to use my personal plugin only in some pages. If I remove the add_action function ('the_content', 'my_plugin_content'); the plugin does not show me the content of the other pages that are not in in_array ();
function my_plugin_content($content){
global $post; global $wp; global $wpdb;
$page =array('page1', 'page2','page3');
$current_page = $wp->request;
if(in_array($current_page, $page))
{
$old_content=$post->post_content;
$sql = "UPDATE wp_posts SET post_content = '' WHERE ID = $post->ID";
$wpdb->get_results($sql);
include_once(plugin_dir_path( __FILE__ ).'loaders/loaders.php');
$obj = new Loader;
$content.=$obj->controller($current_page);
$my_post = array();
$my_post['ID'] = $post->ID;
$my_post['post_content']=$content;
wp_update_post($my_post);
}
}
add_action('the_content', 'my_plugin_content');
I want to use my personal plugin only in some pages. If I remove the add_action function ('the_content', 'my_plugin_content'); the plugin does not show me the content of the other pages that are not in in_array ();
function my_plugin_content($content){
global $post; global $wp; global $wpdb;
$page =array('page1', 'page2','page3');
$current_page = $wp->request;
if(in_array($current_page, $page))
{
$old_content=$post->post_content;
$sql = "UPDATE wp_posts SET post_content = '' WHERE ID = $post->ID";
$wpdb->get_results($sql);
include_once(plugin_dir_path( __FILE__ ).'loaders/loaders.php');
$obj = new Loader;
$content.=$obj->controller($current_page);
$my_post = array();
$my_post['ID'] = $post->ID;
$my_post['post_content']=$content;
wp_update_post($my_post);
}
}
add_action('the_content', 'my_plugin_content');
Share
Improve this question
asked Apr 3, 2020 at 17:45
LucaLuca
192 bronze badges
5
|
1 Answer
Reset to default 0I want to load content from another table into wp_posts and then show it as a normal page. What solution do you recommend.
If that's your goal, then use shortcodes!
For example:
// PHP code
add_shortcode( 'footag', 'wpdocs_footag_func' );
function wpdocs_footag_func( $atts ) {
return "foo = ".$atts['foo'];
}
Then in your content:
[footag foo="bar"]
This prints foo = bar
on the frontend
The [footag]
will get replaced by what your shortcode function returns, and it'll happen when the page is generated. You can pass attributes to it too
Read more about add_shortcode
and check the examples at the official docs here:
https://developer.wordpress/reference/functions/add_shortcode/
the_content()
, it might even be used on excerpts, and it'll be used on RSS feeds etc – Tom J Nowell ♦ Commented Apr 3, 2020 at 18:02the_content
. Keep in mind thatthe_content
is a filter, it has to return a value, that filter will break content rendering across the entire site because it has noreturn
– Tom J Nowell ♦ Commented Apr 3, 2020 at 18:18'the_content'
is a filter hook, not an action hook. – Michael Commented Apr 4, 2020 at 1:46