name = 'button'; $this->label = 'Button / CTA'; $this->category = 'relational'; } public function render( $field, $value = '', $name = null ) { $name = $name ?: "metaforge[{$field['name']}]"; $url = is_array( $value ) ? ( $value['url'] ?? '' ) : ''; $text = is_array( $value ) ? ( $value['text'] ?? '' ) : ''; $target = is_array( $value ) ? ( $value['target'] ?? '_self' ) : '_self'; $style = is_array( $value ) ? ( $value['style'] ?? 'primary' ) : 'primary'; echo '
'; echo ''; echo '
'; // Button Text echo '
'; echo ''; echo ''; echo '
'; // Target URL echo '
'; echo ''; echo ''; echo '
'; // Target Window echo '
'; echo ''; echo ''; echo '
'; // Button Style echo '
'; echo ''; echo ''; echo '
'; echo '
'; echo '
'; } public function format_value( $value, $post_id, $field ) { if ( is_array( $value ) ) { return array( 'url' => (string) ( $value['url'] ?? '' ), 'title' => (string) ( $value['text'] ?? '' ), 'text' => (string) ( $value['text'] ?? '' ), 'target' => (string) ( $value['target'] ?? '_self' ), 'style' => (string) ( $value['style'] ?? 'primary' ), ); } return array( 'url' => (string) $value, 'title' => '', 'text' => '', 'target' => '_self', 'style' => 'primary', ); } public function sanitize( $value, $field ) { if ( is_array( $value ) ) { return array( 'url' => esc_url_raw( $value['url'] ?? '' ), 'text' => sanitize_text_field( $value['text'] ?? '' ), 'target' => in_array( $value['target'] ?? '', array( '_blank', '_self' ), true ) ? $value['target'] : '_self', 'style' => sanitize_key( $value['style'] ?? 'primary' ), ); } return array( 'url' => esc_url_raw( (string) $value ), 'text' => '', 'target' => '_self', 'style' => 'primary', ); } }