PHP 33
WP screen / ACF save_post action By micha on 15th February 2020 11:57:56 PM
  1. Gets the current screen object
  2.  
  3. <?php
  4. if ( !function_exists( 'get_current_screen' ) ) {
  5.   require_once ABSPATH . '/wp-admin/includes/screen.php';
  6. }
  7.  
  8. $result = get_current_screen();
  9. print_pre($result);
  10. ?>
  11.  
  12. Very handy for hoking into acf/save_post actions where acf-option-pages have no IDs
  13.  
  14. <?php
  15. if( function_exists('acf_add_options_page') ) {
  16.  
  17.   /*
  18.    * https://www.advancedcustomfields.com/resources/acf_add_options_page/
  19.    */
  20.  
  21.   acf_add_options_page(array(
  22.     'page_title'        => __('RSS Feed Manager'),
  23.     'menu_title'        => 'RSS Manager',
  24.     'menu_slug'         => 'rss-feed-manager',
  25.     'capability'        => 'edit_posts',
  26.     'redirect'          => false
  27.   ));
  28.  
  29.   acf_add_options_sub_page(array(
  30.     'page_title'        => __('Database entries'),
  31.     'menu_title'        => 'Debug-View',
  32.     'parent_slug'       => 'rss-feed-manager',
  33.   ));
  34.  
  35.   acf_add_options_sub_page(array(
  36.     'page_title'        => __('Cron-Job'),
  37.     'menu_title'        => 'Cron-Job',
  38.     'parent_slug'       => 'rss-feed-manager',
  39.   ));
  40.  
  41. }
  42.  
  43.  
  44. /*
  45.  * Option pages have no post-IDs, so we need the slugs
  46.  * - toplevel_page_rss-feed-manager
  47.  * - rss-manager_page_acf-options-debug-view
  48.  * - rss-manager_page_acf-options-cron-job
  49.  *
  50.  * https://codex.wordpress.org/Plugin_API/Admin_Screen_Reference
  51.  */
  52.  
  53.  
  54. /*
  55.  * PAGE -> RSS MANAGER
  56.  */
  57. add_action('toplevel_page_rss-feed-manager', 'before_acf_options_page', 1);
  58. function before_acf_options_page() {
  59.   echo 'output before at toplevel page';
  60. }
  61.  
  62. add_action('toplevel_page_rss-feed-manager', 'after_acf_options_page', 20);
  63. function after_acf_options_page() {
  64.   // check hook position
  65.   echo 'output after toplevel page';
  66.  
  67.   // check hook for `acf_save_post` on specific optionspage
  68.   $screen = get_current_screen();
  69.   if ($screen->id == 'toplevel_page_rss-feed-manager') {
  70.     echo '<blockquote>`acf_save_post` options-page indicator hook, entries should save now in database and datastore (json)</blockquote>';
  71.   }
  72.  
  73.  
  74.   // read json datastore and show info
  75.   $dataDir = ROOTPATH.'/dbs';
  76.  
  77.   $store = [
  78.     'sites' => \SleekDB\SleekDB::store('sites', $dataDir),
  79.     'content' => \SleekDB\SleekDB::store('content', $dataDir)
  80.   ];
  81.  
  82.   // debug output
  83.   $feeds      = $store['sites']->fetch();
  84.   $num_feeds  = count($feeds);
  85.  
  86.   if ($num_feeds > 0) {
  87.     echo '<br /> json db feed entries: ' . $num_feeds . '<br />';
  88.   } else {
  89.     echo '<br /> no feed entries available in the json database <br />';
  90.   }
  91.  
  92.  
  93. }
  94.  
  95.  
  96. /*
  97.  * PAGE -> DEBUG-VIEW
  98.  */
  99.  
  100.  
  101. /*
  102.  * PAGE -> CRON-JOB
  103.  */

Paste is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.