PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.2
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.2
6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 5.6.1 5.6.2 All 33 releases
automatorwp / integrations / wordpress / triggers / view-post-category.php

view-post-category.php in AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI 6.0.2, at integrations/wordpress/triggers/view-post-category.php

139 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * View Post Category
4 *
5 * @package AutomatorWP\Integrations\WordPress\Triggers\View_Post_Category
6 * @author AutomatorWP <[email protected]>, Ruben Garcia <[email protected]>
7 * @since 1.0.0
8 */
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 class AutomatorWP_WordPress_View_Post_Category extends AutomatorWP_Integration_Trigger {
13
14 /**
15 * Initialize the trigger
16 *
17 * @since 1.0.0
18 */
19 public function __construct( $integration ) {
20
21 $this->integration = $integration;
22 $this->trigger = $integration . '_view_post_category';
23
24 parent::__construct();
25
26 }
27
28 /**
29 * Register the trigger
30 *
31 * @since 1.0.0
32 */
33 public function register() {
34
35 automatorwp_register_trigger( $this->trigger, array(
36 'integration' => $this->integration,
37 'label' => __( 'User views a post of a category', 'automatorwp' ),
38 'select_option' => __( 'User views a post of <strong>a category</strong>', 'automatorwp' ),
39 /* translators: %1$s: Term title. %2$s: Number of times. */
40 'edit_label' => sprintf( __( 'User views a post of %1$s %2$s time(s)', 'automatorwp' ), '{term}', '{times}' ),
41 /* translators: %1$s: Term title. */
42 'log_label' => sprintf( __( 'User views a post of %1$s', 'automatorwp' ), '{term}' ),
43 'action' => 'template_redirect',
44 'function' => array( $this, 'listener' ),
45 'priority' => 10,
46 'accepted_args' => 1,
47 'options' => array(
48 'term' => automatorwp_utilities_term_option(),
49 'times' => automatorwp_utilities_times_option(),
50 ),
51 'tags' => array_merge(
52 automatorwp_utilities_post_tags(),
53 automatorwp_utilities_times_tag()
54 )
55 ) );
56
57 }
58
59 /**
60 * Trigger listener
61 *
62 * @since 1.0.0
63 */
64 public function listener() {
65
66 global $post;
67
68 // Bail if in admin area
69 if( is_admin() ) {
70 return;
71 }
72
73 // Bail if not post instanced
74 if( ! $post instanceof WP_Post ) {
75 return;
76 }
77
78 // Bail if post type is not a post
79 if( $post->post_type !== 'post' ) {
80 return;
81 }
82
83 $terms_ids = automatorwp_get_term_ids( $post->ID, 'category' );
84
85 // Bail if post isn't assigned to any category
86 if( empty( $terms_ids ) ) {
87 return;
88 }
89
90 $user_id = get_current_user_id();
91
92 // Bail if user is not logged in
93 if( $user_id === 0 ) {
94 return;
95 }
96
97 automatorwp_trigger_event( array(
98 'trigger' => $this->trigger,
99 'user_id' => $user_id,
100 'post_id' => $post->ID,
101 'terms_ids' => $terms_ids,
102 ) );
103
104 }
105
106 /**
107 * User deserves check
108 *
109 * @since 1.0.0
110 *
111 * @param bool $deserves_trigger True if user deserves trigger, false otherwise
112 * @param stdClass $trigger The trigger object
113 * @param int $user_id The user ID
114 * @param array $event Event information
115 * @param array $trigger_options The trigger's stored options
116 * @param stdClass $automation The trigger's automation object
117 *
118 * @return bool True if user deserves trigger, false otherwise
119 */
120 public function user_deserves_trigger( $deserves_trigger, $trigger, $user_id, $event, $trigger_options, $automation ) {
121
122 // Don't deserve if post and terms IDs are not received
123 if( ! isset( $event['post_id'] ) && ! isset( $event['terms_ids'] ) ) {
124 return false;
125 }
126
127 // Don't deserve if term doesn't match with the trigger option
128 if( ! automatorwp_terms_matches( $event['terms_ids'], $trigger_options['term'] ) ) {
129 return false;
130 }
131
132 return $deserves_trigger;
133
134 }
135
136 }
137
138 new AutomatorWP_WordPress_View_Post_Category( 'wordpress' );
139 new AutomatorWP_WordPress_View_Post_Category( 'posts' );