PluginProbe ʕ •ᴥ•ʔ
VK Blocks / 1.125.0
VK Blocks v1.125.0
1.126.4 1.126.3 1.126.1 1.126.2 1.126.0 1.125.0 1.124.0 1.123.0 1.122.0 1.121.0 1.120.0 1.119.2 1.119.1 1.119.0 1.118.7 1.82.0.0 1.82.0.1 1.83.0.0 1.83.0.1 1.84.0.0 1.84.0.1 1.85.0.2 1.85.0.3 1.85.1.0 1.85.1.1 1.86.0.0 1.86.0.1 1.86.1.0 1.87.0.0 1.87.0.1 1.88.0.1 1.88.0.2 1.89.0.0 1.9.2 1.90.0.0 1.90.0.1 1.90.1.1 1.91.0.0 1.91.1.1 1.92.0.0 1.92.0.1 1.92.1.0 1.92.1.1 1.93.0.0 trunk 1.93.0.1 0.1.1 1.93.1.0 0.10.3 1.93.1.1 0.11.0 1.94.0.0 0.12.6 1.94.0.1 0.15.1 1.94.1.0 0.16.2 1.94.2.1 0.17.6 1.94.2.2 0.2.2 1.95.0.3 0.22.4 1.95.0.4 0.26.7 1.96.2.0 0.3.2 1.96.2.1 0.31.0 1.97.0.1 0.35.5 1.97.0.2 0.37.5 1.99.0.0 0.38.8 1.99.0.1 0.39.4 0.4.7 0.41.0 0.42.0 0.44.13 0.45.2 0.46.1 0.47.0 0.48.0 0.49.8 0.5.2 0.50.3 0.51.0 0.52.2 0.53.2 0.54.0 0.55.0 0.56.2 0.56.3 0.57.6 0.58.10 0.59.0 0.6.0 0.60.1 0.61.2 0.7.1 0.8.2 1.0.16 1.10.0 1.100.0.0 1.100.0.1 1.102.0.0 1.102.0.1 1.103.0.0 1.104.0.0 1.104.0.1 1.105.1.0 1.105.1.1 1.106.0.0 1.106.0.1 1.107.0.0 1.107.0.1 1.107.0.2 1.108.0.0 1.108.0.1 1.109.0.0 1.109.0.1 1.11.4 1.110.0.0 1.110.0.1 1.111.0.0 1.111.0.1 1.111.0.2 1.112.0.0 1.112.0.1 1.113.0.0 1.113.0.1 1.114.0.0 1.114.0.1 1.114.2.0 1.114.2.1 1.115.0.0 1.115.0.1 1.115.1.0 1.115.1.1 1.115.2.0 1.115.2.1 1.116.0.0 1.116.0.1 1.116.1.0 1.116.1.1 1.116.2.0 1.117.0.0 1.117.0.1 1.117.1.0 1.118.2 1.118.5 1.12.0 1.13.2 1.14.1 1.15.1 1.16.11 1.17.0 1.18.6 1.19.0 1.19.1 1.2.3 1.20.7 1.21.0 1.22.4 1.23.0 1.24.5 1.25.1 1.26.2 1.27.7.2 1.28.0.1 1.29.2.0 1.3.9 1.30.0.1 1.31.0.1 1.32.0.2 1.33.2.1 1.36.1.5 1.37.0.0 1.39.2.1 1.4.6 1.40.0.1 1.40.1.0 1.40.1.1 1.41.0.0 1.41.0.1 1.41.2.2 1.41.2.3 1.43.0.0 1.43.0.1 1.43.0.2 1.44.0.0 1.44.0.1 1.45.0.0 1.45.0.1 1.46.0.0 1.46.0.1 1.47.0.0 1.47.0.1 1.47.1.0 1.48.0.0 1.48.0.1 1.48.0.2 1.48.1.0 1.48.1.1 1.5.0 1.50.0.0 1.50.0.1 1.51.0.0 1.51.0.1 1.52.0.0 1.52.0.1 1.53.0.0 1.53.0.1 1.54.0.0 1.54.0.1 1.55.0.0 1.55.0.1 1.56.0.0 1.56.0.1 1.57.0.0 1.57.0.2 1.57.0.3 1.57.0.4 1.57.0.5 1.57.1.0 1.57.1.1 1.57.1.2 1.58.0.0 1.58.0.1 1.59.0.0 1.59.0.1 1.6.0 1.60.0.0 1.60.0.1 1.63.0.0 1.63.0.1 1.64.0.0 1.64.0.1 1.64.1.0 1.64.1.2 1.67.0.0 1.67.0.1 1.68.0.0 1.68.0.1 1.69.0.0 1.69.0.1 1.69.1.1 1.69.1.2 1.7.1 1.70.0.0 1.70.0.1 1.71.0.0 1.71.0.1 1.72.0.0 1.72.1.0 1.72.1.1 1.73.0.0 1.73.0.1 1.74.0.0 1.74.0.1 1.75.0.0 1.75.1.0 1.75.1.1 1.76.0.0 1.76.0.1 1.76.1.0 1.76.1.1 1.76.2.0 1.76.2.1 1.77.0.0 1.77.0.1 1.78.0.0 1.78.0.1 1.79.0.0 1.79.0.1 1.79.0.2 1.79.0.3 1.79.1.0 1.79.1.1 1.8.2 1.80.1.0 1.80.1.1 1.80.1.2 1.81.0.1 1.81.0.2
vk-blocks / src / blocks / page-content / index.php
vk-blocks / src / blocks / page-content Last commit date
block.json 3 months ago class-vk-blocks-check-using-vk-page-content-block.php 3 months ago edit.js 1 month ago icon.svg 3 months ago index.js 3 months ago index.php 2 weeks ago
index.php
190 lines
1 <?php
2 /**
3 * Page Content Block
4 *
5 * @package VK Blocks
6 */
7
8 /**
9 * Registers the `vk-blocks/page-content` block.
10 *
11 * @return void
12 */
13 function vk_blocks_register_block_page_content() {
14 global $vk_blocks_common_attributes;
15 register_block_type(
16 __DIR__,
17 array(
18 'editor_style' => 'vk-blocks-build-editor-css',
19 'editor_script' => 'vk-blocks-build-js',
20 'attributes' => array_merge(
21 array(
22 'className' => array(
23 'type' => 'string',
24 'default' => '',
25 ),
26 'TargetPost' => array(
27 'type' => 'number',
28 'default' => -1,
29 ),
30 ),
31 $vk_blocks_common_attributes
32 ),
33 'render_callback' => 'vk_blocks_page_content_render_callback',
34 )
35 );
36 }
37 add_action( 'init', 'vk_blocks_register_block_page_content', 99 );
38
39 // Add filter for render post content
40 add_filter( 'vk_page_content', 'do_blocks', 9 );
41 add_filter( 'vk_page_content', 'wptexturize' );
42 add_filter( 'vk_page_content', 'convert_smilies', 20 );
43 add_filter( 'vk_page_content', 'shortcode_unautop' );
44 add_filter( 'vk_page_content', 'prepend_attachment' );
45 add_filter( 'vk_page_content', 'wp_filter_content_tags' );
46 add_filter( 'vk_page_content', 'do_shortcode', 11 );
47 add_filter( 'vk_page_content', 'capital_P_dangit', 11 );
48
49 /**
50 * Get Page Content Private Alert Message
51 *
52 * @return string
53 */
54 function vk_blocks_get_page_content_private_alert() {
55 $alert = __( "The Page Content block from VK Blocks version 1.95.0 onwards, non-public or password protected page's content can no longer be displayed.", 'vk-blocks' );
56 $alert .= __( 'If you want to display non-public content in multiple locations, please create it as a Synced pattern(Reusable block) and place it in the desired locations instead of using Page Content block.', 'vk-blocks' );
57 return $alert;
58 }
59
60 /**
61 * Render Callback of Page Content Block
62 *
63 * @param array $attributes attributes.
64 * @return string
65 */
66 function vk_blocks_page_content_render_callback( $attributes ) {
67 $page_content_id = ! empty( $attributes['TargetPost'] ) ? $attributes['TargetPost'] : -1;
68 $post = get_post( $page_content_id );
69
70 $is_rest_request = defined( 'REST_REQUEST' ) && REST_REQUEST;
71
72 // 投稿が存在し、�
73 �開されているか、またはパスワード保護されていないかを確認
74 if ( ! $post || 'publish' !== $post->post_status || ! empty( $post->post_password ) ) {
75 if ( is_admin() || $is_rest_request ) {
76 return '<div class="alert alert-danger" style="padding:1.5rem;"><p class="text-center" style="font-weight:bold;">' . __( 'Post not found, not public, or password protected', 'vk-blocks' ) . '</p><p class="mb-0">' . vk_blocks_get_page_content_private_alert() . '</p></div>';
77 } else {
78 // Front Page
79 return '';
80 }
81 }
82
83 $page_content = $post->post_content;
84 vk_blocks_content_enqueue_scripts( $page_content );
85
86 $vk_blocks_options = VK_Blocks_Options::get_options();
87 if ( has_block( 'vk-blocks/faq2', $page_content ) || has_block( 'vk-blocks/faq', $page_content ) ) {
88 if ( 'open' === $vk_blocks_options['new_faq_accordion'] ) {
89 $page_content = str_replace( '[accordion_trigger_switch]', 'vk_faq-accordion vk_faq-accordion-open', $page_content );
90 } elseif ( 'close' === $vk_blocks_options['new_faq_accordion'] ) {
91 $page_content = str_replace( '[accordion_trigger_switch]', 'vk_faq-accordion vk_faq-accordion-close', $page_content );
92 } else {
93 $page_content = str_replace( '[accordion_trigger_switch]', '', $page_content );
94 }
95 }
96 $page_content = str_replace( '[br-xs]', '<br class="vk_responsive-br vk_responsive-br-xs"/>', $page_content );
97 $page_content = str_replace( '[br-sm]', '<br class="vk_responsive-br vk_responsive-br-sm"/>', $page_content );
98 $page_content = str_replace( '[br-md]', '<br class="vk_responsive-br vk_responsive-br-md"/>', $page_content );
99 $page_content = str_replace( '[br-lg]', '<br class="vk_responsive-br vk_responsive-br-lg"/>', $page_content );
100 $page_content = str_replace( '[br-xl]', '<br class="vk_responsive-br vk_responsive-br-xl"/>', $page_content );
101 $page_content = str_replace( '[br-xxl]', '<br class="vk_responsive-br vk_responsive-br-xxl"/>', $page_content );
102
103 $classes = '';
104 $page_html = '';
105
106 if ( -1 !== $page_content_id ) {
107 $classes .= 'vk_pageContent';
108 if ( isset( $attributes['TargetPost'] ) ) {
109 $classes .= ' vk_pageContent-id-' . $page_content_id;
110 }
111 if ( isset( $attributes['vkb_hidden'] ) && $attributes['vkb_hidden'] ) {
112 $classes .= ' vk_hidden';
113 }
114 if ( isset( $attributes['vkb_hidden_xxl'] ) && $attributes['vkb_hidden_xxl'] ) {
115 $classes .= ' vk_hidden-xxl';
116 }
117 if ( isset( $attributes['vkb_hidden_xl_v2'] ) && $attributes['vkb_hidden_xl_v2'] ) {
118 $classes .= ' vk_hidden-xl';
119 }
120 if ( isset( $attributes['vkb_hidden_lg'] ) && $attributes['vkb_hidden_lg'] ) {
121 $classes .= ' vk_hidden-lg';
122 }
123 if ( isset( $attributes['vkb_hidden_md'] ) && $attributes['vkb_hidden_md'] ) {
124 $classes .= ' vk_hidden-md';
125 }
126 if ( isset( $attributes['vkb_hidden_sm'] ) && $attributes['vkb_hidden_sm'] ) {
127 $classes .= ' vk_hidden-sm';
128 }
129 if ( isset( $attributes['vkb_hidden_xs'] ) && $attributes['vkb_hidden_xs'] ) {
130 $classes .= ' vk_hidden-xs';
131 }
132 if ( isset( $attributes['marginTop'] ) && $attributes['marginTop'] ) {
133 // Strip characters that are invalid in a class name (characters that could lead to HTML/attribute injection) before concatenating.
134 // class 名として不正な文字(HTML/属性への混�
135 �につながる文字)を除去してから連結する.
136 $classes .= ' ' . preg_replace( '/[^A-Za-z0-9_\-\/ ]/', '', $attributes['marginTop'] );
137 }
138 if ( isset( $attributes['marginBottom'] ) && $attributes['marginBottom'] ) {
139 // Strip invalid characters the same way as marginTop, before concatenating.
140 // marginTop と同様に不正な文字を除去してから連結する.
141 $classes .= ' ' . preg_replace( '/[^A-Za-z0-9_\-\/ ]/', '', $attributes['marginBottom'] );
142 }
143
144 $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) );
145
146 $page_html .= '<div ' . $wrapper_attributes . '>';
147 // Warning : 'vk_page_content' is old hook name that this line is old filter name fall back.
148 $page_content = apply_filters( 'vk_page_content', $page_content ); //phpcs:ignore
149 $page_html .= apply_filters( 'vk_blocks_page_content', $page_content );
150 $page_html .= '</div>';
151
152 if ( ! $is_rest_request ) {
153 $url = get_edit_post_link( $page_content_id );
154 if ( $url ) {
155 $page_html .= '<a href="' . esc_url( $url ) . '" class="vk_pageContent_editBtn btn btn-outline-primary btn-sm veu_adminEdit" target="_blank" rel="noopener noreferrer">' . esc_html__( 'Edit this area', 'vk-blocks' ) . '</a>';
156 }
157 }
158 }
159
160 return $page_html;
161 }
162
163
164 /**
165 * Load Scripts
166 *
167 * @param string $page_content Contents.
168 */
169 function vk_blocks_content_enqueue_scripts( $page_content ) {
170 if ( has_block( 'vk-blocks/faq2', $page_content ) || has_block( 'vk-blocks/faq', $page_content ) ) {
171 wp_enqueue_script( 'vk-blocks-faq2', VK_BLOCKS_DIR_URL . 'build/faq2.min.js', array(), VK_BLOCKS_VERSION, true );
172 }
173 if ( has_block( 'vk-blocks/animation', $page_content ) ) {
174 wp_enqueue_script( 'vk-blocks-animation', VK_BLOCKS_DIR_URL . 'build/vk-animation.min.js', array(), VK_BLOCKS_VERSION, true );
175 }
176 if ( has_block( 'vk-blocks/slider', $page_content ) ) {
177 wp_enqueue_style( 'vk-blocks-swiper', VK_BLOCKS_DIR_URL . 'build/swiper.min.css', array(), VK_BLOCKS_VERSION );
178 wp_enqueue_script( 'vk-blocks-swiper', VK_BLOCKS_DIR_URL . 'build/swiper.min.js', array(), VK_BLOCKS_VERSION, true );
179 wp_enqueue_script( 'vk-blocks-slider', VK_BLOCKS_DIR_URL . 'build/vk-slider.min.js', array( 'vk-blocks-swiper' ), VK_BLOCKS_VERSION, true );
180 }
181 }
182 add_action( 'wp_enqueue_scripts', 'vk_blocks_content_enqueue_scripts' );
183
184 // 非�
185 �開の投稿を参�
186 �して表示していないかのチェック
187 // Check if it is displaying content from non-public pages.
188 require_once plugin_dir_path( __FILE__ ) . 'class-vk-blocks-check-using-vk-page-content-block.php';
189 VK_Blocks_Check_Using_VK_Page_Content_Block::activate();
190