Changeset 3656070
- Timestamp:
- 08/20/2026 07:05:59 AM (2 months ago)
- Location:
- clickblog
- Files:
-
- 5 added
- 12 edited
-
assets/banner-1544x500.png (modified) ( previous)
-
assets/banner-772x250.png (modified) ( previous)
-
assets/screenshot-1.png (modified) ( previous)
-
assets/screenshot-2.png (modified) ( previous)
-
assets/screenshot-3.png (added)
-
assets/screenshot-4.png (added)
-
assets/screenshot-5.png (added)
-
assets/screenshot-6.png (added)
-
assets/screenshot-7.png (added)
-
trunk/assets/css/admin.css (modified) (1 diff)
-
trunk/clickblog.php (modified) (3 diffs)
-
trunk/includes/class-clickblog-admin.php (modified) (14 diffs)
-
trunk/includes/class-clickblog-api.php (modified) (1 diff)
-
trunk/includes/class-clickblog-jobs.php (modified) (10 diffs)
-
trunk/languages/clickblog.pot (modified) (2 diffs)
-
trunk/readme.txt (modified) (4 diffs)
-
trunk/uninstall.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
clickblog/trunk/assets/css/admin.css
r3636017 r3656070 194 194 color: #64748b; 195 195 margin-top: 6px; 196 } 197 /* 연동된 ClickBlog 계정. 상태 배지 바로 아래에 오므로 시각적 무게를 한 단계 낮춘다. */ 198 .clickblog-status-account { 199 display: flex; 200 align-items: center; 201 gap: 4px; 202 font-size: 12px; 203 color: #334155; 204 margin-top: 8px; 205 word-break: break-all; 206 } 207 .clickblog-status-account .dashicons { 208 font-size: 14px; 209 width: 14px; 210 height: 14px; 211 color: #94a3b8; 212 flex-shrink: 0; 196 213 } 197 214 .clickblog-divider { -
clickblog/trunk/clickblog.php
r3646544 r3656070 1 1 <?php 2 2 /** 3 * Plugin Name: ClickBlog AI AutoPoster3 * Plugin Name: ClickBlog AI Blog Poster 4 4 * Description: Generate SEO-ready blog posts and featured images with the ClickBlog AI engine, and publish them to WordPress in one click. Requires a free ClickBlog.net account. 5 * Version: 1.5. 15 * Version: 1.5.2 6 6 * Requires at least: 5.8 7 7 * Requires PHP: 7.4 … … 24 24 * Rename this for your plugin and update it as you release new versions. 25 25 */ 26 define( 'CLICKBLOG_VERSION', '1.5. 1' );26 define( 'CLICKBLOG_VERSION', '1.5.2' ); 27 27 define( 'CLICKBLOG_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); 28 28 define( 'CLICKBLOG_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); … … 128 128 wp_unschedule_hook( ClickBlog_Jobs::CRON_HOOK ); 129 129 130 // Flush rewrite rules if needed 131 flush_rewrite_rules(); 130 // ⚠️ flush_rewrite_rules() 를 부르지 않는다. 이 플러그인은 재작성 규칙을 131 // 등록하지 않으므로 부를 이유가 없고, 워드프레스 핸드북도 규칙을 등록하지 132 // 않는 플러그인은 호출하지 말라고 명시한다(무의미한 재생성 비용만 든다). 132 133 } 133 134 } -
clickblog/trunk/includes/class-clickblog-admin.php
r3646544 r3656070 1 1 <?php 2 2 /** 3 * ClickBlog AI AutoPoster — admin screens (settings, AI writing studio).3 * ClickBlog AI Blog Poster — admin screens (settings, AI writing studio). 4 4 * 5 5 * @package ClickBlog … … 38 38 39 39 add_menu_page( 40 __( 'ClickBlog AI AutoPoster', 'clickblog' ),40 __( 'ClickBlog AI Blog Poster', 'clickblog' ), 41 41 __( 'ClickBlog', 'clickblog' ), 42 42 'manage_options', … … 174 174 // 드물게 동기적으로 완료되어 돌아온 경우는 이 자리에서 바로 게시한다. 175 175 if ( is_array( $data ) && ! empty( $data['success'] ) && ! empty( $data['content'] ) && ( empty( $data['post_id'] ) || empty( $data['status'] ) || 'completed' === $data['status'] ) ) { 176 $jobs->publish( $data, $body_arr, $job_id ); 176 $published = $jobs->publish( $data, $body_arr, $job_id ); 177 178 // 게시하지 못했으면 성공으로 돌려보내지 않는다. 화면이 "성공했습니다"를 179 // 띄우고 글은 없는 상태가 되어, 크레딧만 쓴 사용자가 원인을 알 수 없게 된다. 180 if ( is_wp_error( $published ) ) { 181 wp_send_json_error( array( 'error' => ClickBlog_Jobs::publish_error_message( $published ) ) ); 182 } 177 183 } 178 184 … … 274 280 if ( isset( $clean['language'] ) && ! isset( self::supported_languages()[ $clean['language'] ] ) ) { 275 281 $clean['language'] = self::default_language(); 282 } 283 284 // 화풍도 지원 목록 안이어야 한다. 작성 언어와 같은 이유다 — 285 // AIHub 가 모르는 키는 오류가 아니라 **기본 프롬프트로 조용히 떨어진다.** 286 if ( isset( $clean['image_style'] ) && ! isset( self::supported_image_styles()[ $clean['image_style'] ] ) ) { 287 $clean['image_style'] = self::default_image_style(); 276 288 } 277 289 … … 372 384 delete_option( 'clickblog_credits' ); 373 385 delete_option( 'clickblog_connected_at' ); 386 delete_option( 'clickblog_account_email' ); 374 387 375 388 add_settings_error( 'clickblog_messages', 'clickblog_disconnected', __( 'The connection has been removed.', 'clickblog' ), 'updated' ); … … 394 407 if ( isset( $api_response['data']['current_credits'] ) ) { 395 408 update_option( 'clickblog_credits', absint( $api_response['data']['current_credits'] ) ); 409 } 410 411 // 어느 ClickBlog 계정에 붙었는지 화면에 보여주기 위해 보관한다. 412 // 같은 워드프레스에 다른 계정의 키를 넣었을 때 그 사실을 알 방법이 413 // 지금까지 없었다(화면은 "연동됨" 만 말했다). 414 // 415 // ⚠️ 이메일은 handshake 응답에만 실려 온다. user-info(화면을 열 때마다 416 // 부르는 경로)에는 없으므로, 이미 연동해 둔 사이트는 [Save & Test 417 // Connection] 을 한 번 눌러야 채워진다. 그전까지는 표시하지 않는다. 418 if ( ! empty( $api_response['data']['email'] ) ) { 419 update_option( 'clickblog_account_email', sanitize_email( $api_response['data']['email'] ) ); 396 420 } 397 421 … … 489 513 } 490 514 515 /** 516 * 대표 이미지 화풍. 517 * 518 * ⚠️ 정본은 AIHub 의 `generator.IMAGE_STYLE_MAP` 이다. 여기 없는 키를 보내면 519 * AIHub 가 **오류 없이 기본 프롬프트로 떨어진다** — 사용자가 고른 화풍이 520 * 조용히 사라지고 아무도 눈치채지 못한다. 실제로 그런 상태였다: 521 * 플러그인에만 있던 `3d`·`anime` 는 AIHub 가 모르는 값이라 무시됐고, 522 * AIHub 에 있는 `watercolor`·`cinematic`·`minimal` 은 고를 수조차 없었다. 523 * 524 * 라벨은 ClickBlog.net 웹 화면과 같은 문구로 맞춘다. 같은 기능을 두 화면이 525 * 다르게 부르면 사용자가 다른 기능으로 오해한다. 526 * 527 * @return array<string,string> 화풍 키 => 표시 이름 528 */ 529 public static function supported_image_styles() { 530 return array( 531 'flat' => __( 'Flat Illustration', 'clickblog' ), 532 'realistic' => __( 'Realistic', 'clickblog' ), 533 'watercolor' => __( 'Watercolor', 'clickblog' ), 534 'cinematic' => __( 'Cinematic', 'clickblog' ), 535 'minimal' => __( 'Minimal', 'clickblog' ), 536 ); 537 } 538 539 /** 화풍을 고르지 않았거나 모르는 값일 때 쓸 기본값. */ 540 public static function default_image_style() { 541 return 'flat'; 542 } 543 491 544 public static function get_costs() { 492 545 $stored = get_option( 'clickblog_costs', array() ); … … 555 608 'Content-Type' => 'application/json', 556 609 'Authorization' => 'Bearer ' . $api_key, 610 // 서버가 이 경로에서도 플러그인 버전을 수집한다. 빠뜨리면 611 // 스로틀에 걸려 설치본 버전을 영영 못 보는 구간이 생긴다. 612 'User-Agent' => 'ClickBlog-WPPlugin/' . CLICKBLOG_VERSION, 557 613 ), 558 614 'body' => wp_json_encode( array( 'site_url' => get_site_url() ) ), … … 598 654 delete_option( 'clickblog_credits' ); 599 655 delete_option( 'clickblog_connected_at' ); 656 delete_option( 'clickblog_account_email' ); 600 657 601 658 // 이 함수는 화면 렌더링 도중 호출되고 settings_errors() 출력이 그 뒤에 오므로 … … 626 683 $connected_at = get_option( 'clickblog_connected_at', '' ); 627 684 $user_credits = get_option( 'clickblog_credits', 0 ); 685 $account_mail = get_option( 'clickblog_account_email', '' ); 628 686 629 687 if ( empty( $api_key ) ) { … … 641 699 $is_connected = (bool) get_option( 'clickblog_is_connected', false ); 642 700 $api_key = get_option( 'clickblog_api_key', '' ); 701 $account_mail = get_option( 'clickblog_account_email', '' ); 643 702 } 644 703 … … 681 740 </div> 682 741 <div class="clickblog-brand-name"> 683 <h2>ClickBlog AI AutoPoster</h2>742 <h2>ClickBlog AI Blog Poster</h2> 684 743 <span class="clickblog-version-badge">v<?php echo esc_html( CLICKBLOG_VERSION ); ?></span> 685 744 </div> … … 862 921 </label> 863 922 <select id="cb_image_style" class="clickblog-select"> 864 <option value="flat"><?php esc_html_e( 'Flat graphic (illustration)', 'clickblog' ); ?></option> 865 <option value="realistic"><?php esc_html_e( 'Realistic photo', 'clickblog' ); ?></option> 866 <option value="3d"><?php esc_html_e( '3D render', 'clickblog' ); ?></option> 867 <option value="anime"><?php esc_html_e( 'Anime / comic', 'clickblog' ); ?></option> 923 <?php foreach ( self::supported_image_styles() as $cb_style_key => $cb_style_label ) : ?> 924 <option value="<?php echo esc_attr( $cb_style_key ); ?>" <?php selected( $cb_style_key, self::default_image_style() ); ?>> 925 <?php echo esc_html( $cb_style_label ); ?> 926 </option> 927 <?php endforeach; ?> 868 928 </select> 869 929 </div> … … 1128 1188 <?php esc_html_e( 'Connected', 'clickblog' ); ?> 1129 1189 </div> 1190 <?php if ( ! empty( $account_mail ) ) : ?> 1191 <p class="clickblog-status-account"> 1192 <span class="dashicons dashicons-admin-users"></span> 1193 <?php 1194 /* translators: %s: the ClickBlog.net account this site is connected to. */ 1195 echo esc_html( sprintf( __( 'Connected as %s', 'clickblog' ), $account_mail ) ); 1196 ?> 1197 </p> 1198 <?php endif; ?> 1130 1199 <?php if ( ! empty( $connected_at ) ) : ?> 1131 1200 <p class="clickblog-status-time"> -
clickblog/trunk/includes/class-clickblog-api.php
r3646544 r3656070 100 100 } 101 101 102 public static function send_handshake_ping( $api_key ) {103 $api = self::get_instance();104 $res = $api->send_handshake( $api_key );105 return array(106 'success' => $res['success'],107 'message' => $res['success'] ? ( $res['data']['message'] ?? '' ) : ( $res['error'] ?? '' ),108 );109 }110 111 102 /** 112 103 * Tell ClickBlog that this site is disconnecting. -
clickblog/trunk/includes/class-clickblog-jobs.php
r3636017 r3656070 1 1 <?php 2 2 /** 3 * ClickBlog AI AutoPoster — background job watcher.3 * ClickBlog AI Blog Poster — background job watcher. 4 4 * 5 5 * 생성 작업을 지켜보는 주체를 브라우저에서 워드프레스로 옮긴다. … … 329 329 } 330 330 331 $this->publish( $data, $request, $job_id ); 331 $published = $this->publish( $data, $request, $job_id ); 332 333 // 글이 실제로 만들어졌을 때만 완료로 확정한다. 334 // 335 // 예전에는 게시 실패를 그대로 흘려보내고 무조건 completed 로 끝냈다. 그래서 336 // 화면은 "성공했습니다"를 띄우는데 글은 어디에도 없는 상태가 됐다 — 337 // 크레딧은 이미 차감된 뒤라 사용자로서는 원인을 알 방법이 없었다. 338 // 339 // ⚠️ 여기서 재시도하지 않는다. 본문을 보관하지 않으므로 다시 게시하려면 서버에 340 // 또 물어봐야 하는데, 그 사이 다른 경로가 게시를 시도하면 중복 게시 방어를 341 // 한 겹 더 시험하게 된다. 실패를 정직하게 알리는 편이 안전하다. 342 if ( is_wp_error( $published ) ) { 343 return $this->finish( 344 $job_id, 345 'failed', 346 array( 347 'success' => false, 348 'status' => 'failed', 349 'error' => self::publish_error_message( $published ), 350 ) 351 ); 352 } 332 353 333 354 return $this->finish( $job_id, 'completed', $data ); … … 543 564 * @param array $request 게시 설정(상태·카테고리 등). 544 565 * @param string $job_id 작업 번호(중복 게시 판별용). 566 * @return int|WP_Error 글 번호, 또는 게시하지 못한 이유. 545 567 */ 546 568 public function publish( &$data, $request, $job_id = '' ) { … … 550 572 $data['post_id'] = $existing; 551 573 $data['link'] = get_permalink( $existing ); 552 return ;574 return $existing; 553 575 } 554 576 … … 560 582 561 583 if ( '' === trim( $content ) ) { 562 return ;584 return new WP_Error( 'clickblog_empty_content', __( 'The server returned an empty post.', 'clickblog' ) ); 563 585 } 564 586 … … 631 653 if ( is_wp_error( $inserted_id ) ) { 632 654 wp_set_current_user( $previous_user ); 633 return ;655 return $inserted_id; 634 656 } 635 657 … … 638 660 639 661 // 대표 이미지 첨부까지 글쓴이 컨텍스트를 유지한다(첨부물의 소유자가 되도록). 640 $ this->attach_featured_image( $inserted_id, $data, $title );662 $image_result = $this->attach_featured_image( $inserted_id, $data, $title ); 641 663 642 664 wp_set_current_user( $previous_user ); 665 666 // 대표 이미지 실패는 글 게시를 되돌릴 이유가 아니다 — 본문이 훨씬 크고, 667 // 이미지 하나 때문에 글을 통째로 잃는 것이 사용자에게 더 큰 손해다. 668 // 669 // 그렇다고 조용히 넘어가서도 안 된다. 이미지 몫 크레딧은 이미 쓰였고 670 // 서버는 이미지를 정상 전달했으므로 환불도 되지 않는다. 알리지 않으면 671 // 사용자는 "왜 이미지가 없지" 만 남는다 — 게시 실패를 성공이라 말하던 672 // 것과 같은 종류의 침묵이다. 673 if ( is_wp_error( $image_result ) ) { 674 $notice = sprintf( 675 /* translators: %s: WordPress error message explaining why the image could not be attached. */ 676 __( 'The post was published, but the featured image could not be attached: %s', 'clickblog' ), 677 $image_result->get_error_message() 678 ); 679 680 $existing = isset( $data['message'] ) ? trim( (string) $data['message'] ) : ''; 681 $data['message'] = '' !== $existing ? $existing . ' ' . $notice : $notice; 682 } 683 684 return $inserted_id; 685 } 686 687 /** 688 * 게시 실패를 사용자에게 보여줄 한 문장으로 만든다. 689 * 690 * 화면 폴링 경로와 즉시 완료 경로가 같은 문구를 써야 하므로 여기서 한 번만 만든다. 691 * 692 * @param WP_Error $error 게시가 실패한 이유. 693 * @return string 694 */ 695 public static function publish_error_message( $error ) { 696 return sprintf( 697 /* translators: %s: WordPress error message explaining why the post could not be saved. */ 698 __( 'The post was generated but WordPress could not save it: %s', 'clickblog' ), 699 $error->get_error_message() 700 ); 643 701 } 644 702 … … 658 716 * @param array $data ClickBlog.net 응답. 659 717 * @param string $title 글 제목(첨부 설명으로 쓴다). 718 * @return true|WP_Error 붙였거나 붙일 것이 없으면 true, 실패하면 이유. 660 719 */ 661 720 private function attach_featured_image( $post_id, $data, $title ) { 721 // 애초에 이미지를 요청하지 않았거나 서버가 보내지 않은 경우다. 722 // 서버가 못 만든 경우의 크레딧 회수는 서버 쪽 부분 환불이 맡는다. 662 723 if ( empty( $data['featured_image_url'] ) ) { 663 return ;724 return true; 664 725 } 665 726 … … 668 729 require_once ABSPATH . 'wp-admin/includes/image.php'; 669 730 731 // ⚠️ 일부 공유 호스팅은 워드프레스에서 나가는 외부 HTTPS 요청을 막는다. 732 // 그런 사이트에서는 여기서 실패하고, 글만 이미지 없이 올라간다. 670 733 $tmp = download_url( $data['featured_image_url'], 15 ); 671 734 672 735 if ( is_wp_error( $tmp ) ) { 673 return ;736 return $tmp; 674 737 } 675 738 … … 693 756 if ( is_wp_error( $attachment_id ) ) { 694 757 wp_delete_file( $tmp ); 695 return ;758 return $attachment_id; 696 759 } 697 760 698 761 set_post_thumbnail( $post_id, $attachment_id ); 762 763 return true; 699 764 } 700 765 } -
clickblog/trunk/languages/clickblog.pot
r3640058 r3656070 1 # Copyright (C) 2026ClickBlog.net2 # This file is distributed under the GPL-2.0-or-later license.1 # Copyright (C) ClickBlog.net 2 # This file is distributed under the same license as the ClickBlog AI Blog Poster plugin. 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: ClickBlog AI Auto Poster 1.4.0\n" 6 "Report-Msgid-Bugs-To: https://clickblog.net/\n" 7 "POT-Creation-Date: 2026-07-29T00:00:00+00:00\n" 5 "Project-Id-Version: ClickBlog AI Blog Poster\n" 8 6 "MIME-Version: 1.0\n" 9 7 "Content-Type: text/plain; charset=UTF-8\n" 10 8 "Content-Transfer-Encoding: 8bit\n" 11 "Language-Team: ClickBlog.net\n"12 "X-Generator: clickblog-make-pot\n"13 9 "X-Domain: clickblog\n" 14 10 15 #: includes/class-clickblog-admin.php: 3716 msgid "ClickBlog AI AutoPoster"17 msgstr "" 18 19 #: includes/class-clickblog-admin.php: 3811 #: includes/class-clickblog-admin.php:40 12 msgid "ClickBlog AI Blog Poster" 13 msgstr "" 14 15 #: includes/class-clickblog-admin.php:41 20 16 msgid "ClickBlog" 21 17 msgstr "" 22 18 23 #: includes/class-clickblog-admin.php: 76 includes/class-clickblog-admin.php:66119 #: includes/class-clickblog-admin.php:86 includes/class-clickblog-admin.php:995 24 20 msgid "(Text %1$dC + featured image %2$dC)" 25 21 msgstr "" 26 22 27 #: includes/class-clickblog-admin.php: 7723 #: includes/class-clickblog-admin.php:88 28 24 msgid "(Text %dC)" 29 25 msgstr "" 30 26 31 #: includes/class-clickblog-admin.php: 7827 #: includes/class-clickblog-admin.php:89 32 28 msgid "No ClickBlog API key is registered. Please add your key on the Connection & Settings tab first." 33 29 msgstr "" 34 30 35 #: includes/class-clickblog-admin.php: 7931 #: includes/class-clickblog-admin.php:90 36 32 msgid "Please enter a topic for your post." 37 33 msgstr "" 38 34 39 #: includes/class-clickblog-admin.php: 8035 #: includes/class-clickblog-admin.php:91 40 36 msgid "Error: " 41 37 msgstr "" 42 38 43 #: includes/class-clickblog-admin.php: 8139 #: includes/class-clickblog-admin.php:92 44 40 msgid "Your post was generated and published successfully." 45 41 msgstr "" 46 42 47 #: includes/class-clickblog-admin.php: 8243 #: includes/class-clickblog-admin.php:93 48 44 msgid "Remaining credits: " 49 45 msgstr "" 50 46 51 #: includes/class-clickblog-admin.php: 8347 #: includes/class-clickblog-admin.php:94 includes/class-clickblog-jobs.php:259 52 48 msgid "Post generation timed out." 53 49 msgstr "" 54 50 55 #: includes/class-clickblog-admin.php: 8451 #: includes/class-clickblog-admin.php:95 56 52 msgid "An error occurred while checking the generation status." 57 53 msgstr "" 58 54 59 #: includes/class-clickblog-admin.php: 8555 #: includes/class-clickblog-admin.php:96 includes/class-clickblog-jobs.php:306 60 56 msgid "AI post generation failed." 61 57 msgstr "" 62 58 63 #: includes/class-clickblog-admin.php: 8659 #: includes/class-clickblog-admin.php:97 64 60 msgid "Post generation failed." 65 61 msgstr "" 66 62 67 #: includes/class-clickblog-admin.php: 8763 #: includes/class-clickblog-admin.php:98 68 64 msgid "Could not reach the server" 69 65 msgstr "" 70 66 71 #: includes/class-clickblog-admin.php:97 includes/class-clickblog-admin.php:163 includes/class-clickblog-admin.php:226 67 #: includes/class-clickblog-admin.php:99 68 msgid "The AI is writing your post…" 69 msgstr "" 70 71 #: includes/class-clickblog-admin.php:100 72 msgid "Picking up a post generation that was already running…" 73 msgstr "" 74 75 #: includes/class-clickblog-admin.php:102 76 msgid "Elapsed %s" 77 msgstr "" 78 79 #: includes/class-clickblog-admin.php:103 80 msgid "m" 81 msgstr "" 82 83 #: includes/class-clickblog-admin.php:104 84 msgid "s" 85 msgstr "" 86 87 #: includes/class-clickblog-admin.php:114 includes/class-clickblog-admin.php:198 includes/class-clickblog-admin.php:352 72 88 msgid "You do not have permission to do this." 73 89 msgstr "" 74 90 75 #: includes/class-clickblog-admin.php:1 04 includes/class-clickblog-admin.php:17091 #: includes/class-clickblog-admin.php:121 includes/class-clickblog-admin.php:202 includes/class-clickblog-jobs.php:482 76 92 msgid "No API key has been configured." 77 93 msgstr "" 78 94 79 #: includes/class-clickblog-admin.php:1 46 includes/class-clickblog-admin.php:212includes/class-clickblog-api.php:8295 #: includes/class-clickblog-admin.php:160 includes/class-clickblog-api.php:82 80 96 msgid "Could not connect to the ClickBlog server." 81 97 msgstr "" 82 98 83 #: includes/class-clickblog-admin.php:246 99 #: includes/class-clickblog-admin.php:209 100 msgid "No generation job was specified." 101 msgstr "" 102 103 #: includes/class-clickblog-admin.php:388 84 104 msgid "The connection has been removed." 85 105 msgstr "" 86 106 87 #: includes/class-clickblog-admin.php: 271107 #: includes/class-clickblog-admin.php:429 88 108 msgid "Connected to ClickBlog.net successfully." 89 109 msgstr "" 90 110 91 #: includes/class-clickblog-admin.php: 280111 #: includes/class-clickblog-admin.php:438 92 112 msgid "Could not connect to the ClickBlog server: " 93 113 msgstr "" 94 114 95 #: includes/class-clickblog-admin.php: 286115 #: includes/class-clickblog-admin.php:444 96 116 msgid "Settings saved." 97 117 msgstr "" 98 118 99 #: includes/class-clickblog-admin.php:356 119 #: includes/class-clickblog-admin.php:531 120 msgid "Flat Illustration" 121 msgstr "" 122 123 #: includes/class-clickblog-admin.php:532 124 msgid "Realistic" 125 msgstr "" 126 127 #: includes/class-clickblog-admin.php:533 128 msgid "Watercolor" 129 msgstr "" 130 131 #: includes/class-clickblog-admin.php:534 132 msgid "Cinematic" 133 msgstr "" 134 135 #: includes/class-clickblog-admin.php:535 136 msgid "Minimal" 137 msgstr "" 138 139 #: includes/class-clickblog-admin.php:663 100 140 msgid "The saved API key is no longer valid. It may have been revoked or reissued on ClickBlog.net. Please issue a new key and register it again." 101 141 msgstr "" 102 142 103 #: includes/class-clickblog-admin.php: 439 includes/class-clickblog-admin.php:668143 #: includes/class-clickblog-admin.php:750 includes/class-clickblog-admin.php:1006 104 144 msgid "Credits:" 105 145 msgstr "" 106 146 107 #: includes/class-clickblog-admin.php: 455147 #: includes/class-clickblog-admin.php:766 108 148 msgid "AI Writing Studio" 109 149 msgstr "" 110 150 111 #: includes/class-clickblog-admin.php: 459151 #: includes/class-clickblog-admin.php:770 112 152 msgid "Connection & Settings" 113 153 msgstr "" 114 154 115 #: includes/class-clickblog-admin.php: 473155 #: includes/class-clickblog-admin.php:784 116 156 msgid "Generate an AI post and publish it to WordPress in one click" 117 157 msgstr "" 118 158 119 #: includes/class-clickblog-admin.php: 476159 #: includes/class-clickblog-admin.php:787 120 160 msgid "Create high-quality posts and images with the ClickBlog AI engine and publish them without leaving WordPress." 121 161 msgstr "" 122 162 123 #: includes/class-clickblog-admin.php: 483163 #: includes/class-clickblog-admin.php:794 124 164 msgid "Connect your ClickBlog account to start generating posts." 125 165 msgstr "" 126 166 127 #: includes/class-clickblog-admin.php: 485167 #: includes/class-clickblog-admin.php:796 128 168 msgid "Go to connection settings" 129 169 msgstr "" 130 170 131 #: includes/class-clickblog-admin.php: 495171 #: includes/class-clickblog-admin.php:806 132 172 msgid "1. Topic or one-line summary *" 133 173 msgstr "" 134 174 135 #: includes/class-clickblog-admin.php: 501175 #: includes/class-clickblog-admin.php:812 136 176 msgid "e.g. Best seaside cafes to visit in Jeju this summer" 137 177 msgstr "" 138 178 139 #: includes/class-clickblog-admin.php: 505179 #: includes/class-clickblog-admin.php:816 140 180 msgid "The AI writes a search- and click-friendly post based on this summary." 141 181 msgstr "" 142 182 143 #: includes/class-clickblog-admin.php: 512183 #: includes/class-clickblog-admin.php:823 144 184 msgid "2. Focus keywords (comma separated)" 145 185 msgstr "" 146 186 147 #: includes/class-clickblog-admin.php: 518187 #: includes/class-clickblog-admin.php:829 148 188 msgid "e.g. jeju travel, seaside cafe, local food" 149 189 msgstr "" 150 190 151 #: includes/class-clickblog-admin.php: 525191 #: includes/class-clickblog-admin.php:836 152 192 msgid "3. Target length" 153 193 msgstr "" 154 194 155 #: includes/class-clickblog-admin.php: 528195 #: includes/class-clickblog-admin.php:839 156 196 msgid "Medium (about 1,500 characters) - recommended" 157 197 msgstr "" 158 198 159 #: includes/class-clickblog-admin.php: 529199 #: includes/class-clickblog-admin.php:840 160 200 msgid "Short (about 800 characters)" 161 201 msgstr "" 162 202 163 #: includes/class-clickblog-admin.php: 530203 #: includes/class-clickblog-admin.php:841 164 204 msgid "Long (about 2,500 characters)" 165 205 msgstr "" 166 206 167 #: includes/class-clickblog-admin.php: 531207 #: includes/class-clickblog-admin.php:842 168 208 msgid "Custom" 169 209 msgstr "" 170 210 171 #: includes/class-clickblog-admin.php: 534211 #: includes/class-clickblog-admin.php:845 172 212 msgid "Characters (200-5000)" 173 213 msgstr "" 174 214 175 #: includes/class-clickblog-admin.php: 541215 #: includes/class-clickblog-admin.php:852 176 216 msgid "4. Language" 177 217 msgstr "" 178 218 179 #: includes/class-clickblog-admin.php:544 180 msgid "Korean" 181 msgstr "" 182 183 #: includes/class-clickblog-admin.php:545 184 msgid "English" 185 msgstr "" 186 187 #: includes/class-clickblog-admin.php:546 188 msgid "Japanese" 189 msgstr "" 190 191 #: includes/class-clickblog-admin.php:547 192 msgid "Chinese" 193 msgstr "" 194 195 #: includes/class-clickblog-admin.php:554 219 #: includes/class-clickblog-admin.php:878 196 220 msgid "5. Tone and writing style" 197 221 msgstr "" 198 222 199 #: includes/class-clickblog-admin.php: 557223 #: includes/class-clickblog-admin.php:881 200 224 msgid "Informative (clear and professional)" 201 225 msgstr "" 202 226 203 #: includes/class-clickblog-admin.php: 558227 #: includes/class-clickblog-admin.php:882 204 228 msgid "Conversational (blog / social tone)" 205 229 msgstr "" 206 230 207 #: includes/class-clickblog-admin.php: 559231 #: includes/class-clickblog-admin.php:883 208 232 msgid "Persuasive (drives conversions)" 209 233 msgstr "" 210 234 211 #: includes/class-clickblog-admin.php: 560235 #: includes/class-clickblog-admin.php:884 212 236 msgid "Analytical (report / column tone)" 213 237 msgstr "" 214 238 215 #: includes/class-clickblog-admin.php: 561239 #: includes/class-clickblog-admin.php:885 216 240 msgid "Storytelling (essay / personal experience)" 217 241 msgstr "" 218 242 219 #: includes/class-clickblog-admin.php: 568243 #: includes/class-clickblog-admin.php:892 220 244 msgid "6. Number of sections" 221 245 msgstr "" 222 246 223 #: includes/class-clickblog-admin.php: 571247 #: includes/class-clickblog-admin.php:895 224 248 msgid "5 sections (default)" 225 249 msgstr "" 226 250 227 #: includes/class-clickblog-admin.php: 572251 #: includes/class-clickblog-admin.php:896 228 252 msgid "3 sections" 229 253 msgstr "" 230 254 231 #: includes/class-clickblog-admin.php: 573255 #: includes/class-clickblog-admin.php:897 232 256 msgid "4 sections" 233 257 msgstr "" 234 258 235 #: includes/class-clickblog-admin.php: 574259 #: includes/class-clickblog-admin.php:898 236 260 msgid "6 sections" 237 261 msgstr "" 238 262 239 #: includes/class-clickblog-admin.php: 575263 #: includes/class-clickblog-admin.php:899 240 264 msgid "7 sections" 241 265 msgstr "" 242 266 243 #: includes/class-clickblog-admin.php: 576267 #: includes/class-clickblog-admin.php:900 244 268 msgid "8 sections" 245 269 msgstr "" 246 270 247 #: includes/class-clickblog-admin.php: 583271 #: includes/class-clickblog-admin.php:907 248 272 msgid "7. Post design style" 249 273 msgstr "" 250 274 251 #: includes/class-clickblog-admin.php: 586275 #: includes/class-clickblog-admin.php:910 252 276 msgid "Basic (classic)" 253 277 msgstr "" 254 278 255 #: includes/class-clickblog-admin.php: 587279 #: includes/class-clickblog-admin.php:911 256 280 msgid "Modern (clean)" 257 281 msgstr "" 258 282 259 #: includes/class-clickblog-admin.php: 588283 #: includes/class-clickblog-admin.php:912 260 284 msgid "Minimal (compact)" 261 285 msgstr "" 262 286 263 #: includes/class-clickblog-admin.php: 589287 #: includes/class-clickblog-admin.php:913 264 288 msgid "Magazine (editorial)" 265 289 msgstr "" 266 290 267 #: includes/class-clickblog-admin.php: 596291 #: includes/class-clickblog-admin.php:920 268 292 msgid "8. Featured image style" 269 293 msgstr "" 270 294 271 #: includes/class-clickblog-admin.php:599 272 msgid "Flat graphic (illustration)" 273 msgstr "" 274 275 #: includes/class-clickblog-admin.php:600 276 msgid "Realistic photo" 277 msgstr "" 278 279 #: includes/class-clickblog-admin.php:601 280 msgid "3D render" 281 msgstr "" 282 283 #: includes/class-clickblog-admin.php:602 284 msgid "Anime / comic" 285 msgstr "" 286 287 #: includes/class-clickblog-admin.php:609 295 #: includes/class-clickblog-admin.php:934 288 296 msgid "9. Post status" 289 297 msgstr "" 290 298 291 #: includes/class-clickblog-admin.php: 612299 #: includes/class-clickblog-admin.php:937 292 300 msgid "Publish immediately" 293 301 msgstr "" 294 302 295 #: includes/class-clickblog-admin.php: 613303 #: includes/class-clickblog-admin.php:938 296 304 msgid "Draft" 297 305 msgstr "" 298 306 299 #: includes/class-clickblog-admin.php: 614307 #: includes/class-clickblog-admin.php:939 300 308 msgid "Pending review" 301 309 msgstr "" 302 310 303 #: includes/class-clickblog-admin.php: 615311 #: includes/class-clickblog-admin.php:940 304 312 msgid "Private" 305 313 msgstr "" 306 314 307 #: includes/class-clickblog-admin.php: 622315 #: includes/class-clickblog-admin.php:947 308 316 msgid "10. Category" 309 317 msgstr "" 310 318 311 #: includes/class-clickblog-admin.php: 625319 #: includes/class-clickblog-admin.php:950 312 320 msgid "Default (Uncategorized)" 313 321 msgstr "" 314 322 315 #: includes/class-clickblog-admin.php: 639323 #: includes/class-clickblog-admin.php:964 316 324 msgid "11. Add an inline table of contents" 317 325 msgstr "" 318 326 319 #: includes/class-clickblog-admin.php: 643327 #: includes/class-clickblog-admin.php:968 320 328 msgid "12. Include a FAQ section" 321 329 msgstr "" 322 330 323 #: includes/class-clickblog-admin.php: 647331 #: includes/class-clickblog-admin.php:975 324 332 msgid "13. Generate an AI featured image (+%d C)" 325 333 msgstr "" 326 334 327 #: includes/class-clickblog-admin.php: 658335 #: includes/class-clickblog-admin.php:989 328 336 msgid "Credits to be used:" 329 337 msgstr "" 330 338 331 #: includes/class-clickblog-admin.php: 672339 #: includes/class-clickblog-admin.php:1010 332 340 msgid "Top up" 333 341 msgstr "" 334 342 335 #: includes/class-clickblog-admin.php: 683343 #: includes/class-clickblog-admin.php:1021 336 344 msgid "Generate and publish with AI" 337 345 msgstr "" 338 346 339 #: includes/class-clickblog-admin.php: 692347 #: includes/class-clickblog-admin.php:1030 340 348 msgid "The AI is writing your post and creating images. This usually takes 15-30 seconds." 341 349 msgstr "" 342 350 343 #: includes/class-clickblog-admin.php:704 351 #: includes/class-clickblog-admin.php:1036 352 msgid "You can leave this page — WordPress keeps watching and publishes the post as soon as it is ready." 353 msgstr "" 354 355 #: includes/class-clickblog-admin.php:1048 344 356 msgid "Edit in WordPress" 345 357 msgstr "" 346 358 347 #: includes/class-clickblog-admin.php: 708359 #: includes/class-clickblog-admin.php:1052 348 360 msgid "View post" 349 361 msgstr "" 350 362 351 #: includes/class-clickblog-admin.php: 721363 #: includes/class-clickblog-admin.php:1065 352 364 msgid "Get started in 3 steps" 353 365 msgstr "" 354 366 355 #: includes/class-clickblog-admin.php: 726367 #: includes/class-clickblog-admin.php:1070 356 368 msgid "Get your API key from ClickBlog.net" 357 369 msgstr "" 358 370 359 #: includes/class-clickblog-admin.php: 728371 #: includes/class-clickblog-admin.php:1072 360 372 msgid "Free bonus credits are granted on your first connection." 361 373 msgstr "" 362 374 363 #: includes/class-clickblog-admin.php: 731375 #: includes/class-clickblog-admin.php:1075 364 376 msgid "Get your API key" 365 377 msgstr "" 366 378 367 #: includes/class-clickblog-admin.php: 735379 #: includes/class-clickblog-admin.php:1079 368 380 msgid "No account yet? Sign up for free" 369 381 msgstr "" 370 382 371 #: includes/class-clickblog-admin.php: 742383 #: includes/class-clickblog-admin.php:1086 372 384 msgid "Paste the key into the field below" 373 385 msgstr "" 374 386 375 #: includes/class-clickblog-admin.php: 743387 #: includes/class-clickblog-admin.php:1087 376 388 msgid "Use the Copy key button on the ClickBlog.net plugin page." 377 389 msgstr "" 378 390 379 #: includes/class-clickblog-admin.php: 748391 #: includes/class-clickblog-admin.php:1092 380 392 msgid "Click Save & Test Connection and you are ready" 381 393 msgstr "" 382 394 383 #: includes/class-clickblog-admin.php: 749395 #: includes/class-clickblog-admin.php:1093 384 396 msgid "Once connected, you go straight to the writing screen." 385 397 msgstr "" 386 398 387 #: includes/class-clickblog-admin.php: 764399 #: includes/class-clickblog-admin.php:1108 388 400 msgid "ClickBlog secret API key" 389 401 msgstr "" 390 402 391 #: includes/class-clickblog-admin.php: 776403 #: includes/class-clickblog-admin.php:1120 392 404 msgid "An API key is saved. Leave this field empty to keep it." 393 405 msgstr "" 394 406 395 #: includes/class-clickblog-admin.php: 785407 #: includes/class-clickblog-admin.php:1129 396 408 msgid "Enter a new key only to replace the saved one" 397 409 msgstr "" 398 410 399 #: includes/class-clickblog-admin.php: 790411 #: includes/class-clickblog-admin.php:1134 400 412 msgid "Enter the secret API key issued on the ClickBlog.net plugin page." 401 413 msgstr "" 402 414 403 #: includes/class-clickblog-admin.php: 792415 #: includes/class-clickblog-admin.php:1136 404 416 msgid "Get or view your key" 405 417 msgstr "" 406 418 407 #: includes/class-clickblog-admin.php: 798419 #: includes/class-clickblog-admin.php:1142 408 420 msgid "Default author" 409 421 msgstr "" 410 422 411 #: includes/class-clickblog-admin.php: 809423 #: includes/class-clickblog-admin.php:1153 412 424 msgid "Choose the account used as the author of posts published by ClickBlog." 413 425 msgstr "" 414 426 415 #: includes/class-clickblog-admin.php: 814427 #: includes/class-clickblog-admin.php:1158 416 428 msgid "ClickBlog service URL" 417 429 msgstr "" 418 430 419 #: includes/class-clickblog-admin.php: 826431 #: includes/class-clickblog-admin.php:1170 420 432 msgid "Save & Test Connection" 421 433 msgstr "" 422 434 423 #: includes/class-clickblog-admin.php: 830435 #: includes/class-clickblog-admin.php:1174 424 436 msgid "Disconnect" 425 437 msgstr "" 426 438 427 #: includes/class-clickblog-admin.php: 839439 #: includes/class-clickblog-admin.php:1183 428 440 msgid "Connection status" 429 441 msgstr "" 430 442 431 #: includes/class-clickblog-admin.php: 844443 #: includes/class-clickblog-admin.php:1188 432 444 msgid "Connected" 433 445 msgstr "" 434 446 435 #: includes/class-clickblog-admin.php:848 447 #: includes/class-clickblog-admin.php:1195 448 msgid "Connected as %s" 449 msgstr "" 450 451 #: includes/class-clickblog-admin.php:1203 436 452 msgid "First connected: %s" 437 453 msgstr "" 438 454 439 #: includes/class-clickblog-admin.php: 854455 #: includes/class-clickblog-admin.php:1210 440 456 msgid "Not connected" 441 457 msgstr "" 442 458 443 #: includes/class-clickblog-admin.php: 857459 #: includes/class-clickblog-admin.php:1213 444 460 msgid "Follow the steps on the left to register your key and unlock post generation." 445 461 msgstr "" 446 462 447 #: includes/class-clickblog-admin.php: 865463 #: includes/class-clickblog-admin.php:1221 448 464 msgid "Credits" 449 465 msgstr "" 450 466 451 #: includes/class-clickblog-admin.php: 871467 #: includes/class-clickblog-admin.php:1230 452 468 msgid "Not enough for one post with an image (%dC)." 453 469 msgstr "" 454 470 455 #: includes/class-clickblog-admin.php: 876471 #: includes/class-clickblog-admin.php:1238 456 472 msgid "Top up credits" 457 473 msgstr "" 458 474 459 #: includes/class-clickblog-admin.php: 885475 #: includes/class-clickblog-admin.php:1247 460 476 msgid "Open ClickBlog dashboard" 461 477 msgstr "" 462 478 463 #: includes/class-clickblog-admin.php: 890479 #: includes/class-clickblog-admin.php:1252 464 480 msgid "Reissue API key" 465 msgstr ""466 467 #: includes/class-clickblog-admin.php:910468 msgid "AI post"469 481 msgstr "" 470 482 … … 477 489 msgstr "" 478 490 479 #: includes/class-clickblog-admin.php 480 msgid "The AI is writing your post…" 481 msgstr "" 482 483 #: includes/class-clickblog-admin.php 484 msgid "Picking up a post generation that was already running…" 485 msgstr "" 486 487 #. translators: %s: elapsed time, for example "1m 20s". 488 #: includes/class-clickblog-admin.php 489 msgid "Elapsed %s" 490 msgstr "" 491 492 #. translators: abbreviation for minutes, shown next to the elapsed time. 493 #: includes/class-clickblog-admin.php 494 msgid "m" 495 msgstr "" 496 497 #. translators: abbreviation for seconds, shown next to the elapsed time. 498 #: includes/class-clickblog-admin.php 499 msgid "s" 500 msgstr "" 501 502 #: includes/class-clickblog-admin.php 503 msgid "You can leave this page — WordPress keeps watching and publishes the post as soon as it is ready." 504 msgstr "" 505 506 #: includes/class-clickblog-admin.php 507 msgid "No generation job was specified." 508 msgstr "" 509 510 #: includes/class-clickblog-jobs.php 491 #: includes/class-clickblog-jobs.php:292 511 492 msgid "The saved API key was rejected by ClickBlog.net." 512 493 msgstr "" 494 495 #: includes/class-clickblog-jobs.php:577 496 msgid "AI post" 497 msgstr "" 498 499 #: includes/class-clickblog-jobs.php:584 500 msgid "The server returned an empty post." 501 msgstr "" 502 503 #: includes/class-clickblog-jobs.php:676 504 msgid "The post was published, but the featured image could not be attached: %s" 505 msgstr "" 506 507 #: includes/class-clickblog-jobs.php:698 508 msgid "The post was generated but WordPress could not save it: %s" 509 msgstr "" -
clickblog/trunk/readme.txt
r3648065 r3656070 3 3 Tags: ai, auto post, autoblogging, content generation, seo 4 4 Requires at least: 5.8 5 Tested up to: 7. 05 Tested up to: 7.1 6 6 Requires PHP: 7.4 7 Stable tag: 1.5. 17 Stable tag: 1.5.2 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 30 30 31 31 This plugin is a client for the ClickBlog.net service and **requires a free ClickBlog.net account** plus an API key. AI generation consumes credits from your ClickBlog account. You can sign up at [clickblog.net](https://clickblog.net). 32 33 == External services ==34 35 This plugin connects to the ClickBlog.net API to generate blog content and images. It is required for the plugin to function — without it, no content can be generated.36 37 **What is sent, and when**38 39 Data is transmitted only when you click the generate button on the plugin screen, or when you press "Save & Test Connection":40 41 * Your ClickBlog API key (to authenticate the request)42 * Your site URL (to identify which site the request belongs to)43 * The generation options you entered: topic, keywords, target length, language, tone, paragraph count, post style, image style, post status and category44 45 After you start a generation, the plugin checks whether that job has finished. These follow-up requests carry the same data as above plus the job identifier, and nothing else. They stop as soon as the post is delivered, the job fails, or 20 minutes have passed. They are scheduled through WP-Cron so that a post you already spent credits on is still published if you close the page. No new generation is ever started on its own.46 47 **What is received**48 49 The generated post title, body content, excerpt, and (if requested) a featured image, along with your remaining credit balance.50 51 **Where it goes**52 53 Requests are sent to `https://clickblog.net`. To produce the text and images, ClickBlog forwards your generation options to its AI processing service at `https://api.using.ai.kr`, which in turn uses Google's Gemini and Imagen APIs.54 55 No post content, visitor data, or personal information from your WordPress site is collected or transmitted beyond the options you enter on the plugin screen.56 57 * Service provider: ClickBlog.net58 * Terms of Service: https://clickblog.net/terms59 * Privacy Policy: https://clickblog.net/privacy60 32 61 33 == Installation == … … 93 65 Published posts stay in WordPress as normal posts. Uninstalling removes only the plugin's own settings, including the stored API key. 94 66 67 == External services == 68 69 This plugin connects to the ClickBlog.net API to generate blog content and images. It is required for the plugin to function — without it, no content can be generated. 70 71 **What is sent, and when** 72 73 Data is transmitted only when you click the generate button on the plugin screen, or when you press "Save & Test Connection": 74 75 * Your ClickBlog API key (to authenticate the request) 76 * Your site URL (to identify which site the request belongs to) 77 * The generation options you entered: topic, keywords, target length, language, tone, paragraph count, post style, image style, post status and category 78 79 After you start a generation, the plugin checks whether that job has finished. These follow-up requests carry the same data as above plus the job identifier, and nothing else. They stop as soon as the post is delivered, the job fails, or 20 minutes have passed. They are scheduled through WP-Cron so that a post you already spent credits on is still published if you close the page. No new generation is ever started on its own. 80 81 **What is received** 82 83 The generated post title, body content, excerpt, and (if requested) a featured image, along with your remaining credit balance. 84 85 **Where it goes** 86 87 Requests are sent to `https://clickblog.net`. To produce the text and images, ClickBlog forwards your generation options to its AI processing service at `https://api.using.ai.kr`, which in turn uses Google's Gemini and Imagen APIs. 88 89 No post content, visitor data, or personal information from your WordPress site is collected or transmitted beyond the options you enter on the plugin screen. 90 91 * Service provider: ClickBlog.net 92 * Terms of Service: https://clickblog.net/terms 93 * Privacy Policy: https://clickblog.net/privacy 94 95 95 == Screenshots == 96 96 97 1. AI Writing Studio — enter a topic and generate a complete post. 98 2. Connection settings — save your API key and check your credit balance. 97 1. AI Writing Studio — pick your options and generate a complete post without leaving WordPress. 98 2. A published post — featured image, table of contents and headings, written and published in one click. 99 3. Twelve writing languages, with your site language selected by default. 100 4. The same structure in Spanish — headings, table of contents and FAQ follow the language you pick. 101 5. And in Korean. 102 6. Featured image styles, and the exact credit cost shown before you generate. 103 7. Connection & Settings — save your API key, choose the post author, and check your credit balance. 99 104 100 105 == Changelog == 106 107 = 1.5.2 = 108 * The plugin now calls itself **ClickBlog AI Blog Poster** everywhere. The admin screen used the old name while the plugin directory already showed the new one. 109 * Fixed: when WordPress could not save a generated post, the screen still reported success and the post silently went missing. It now reports the failure and shows the reason WordPress gave. 110 * Fixed: the featured image styles now match what the ClickBlog engine actually supports. "3D render" and "Anime / comic" were silently ignored — the image was still generated, just not in the style you picked — and Watercolor, Cinematic and Minimal could not be picked at all. The list is now Flat Illustration, Realistic, Watercolor, Cinematic and Minimal, the same five offered on ClickBlog.net. 111 * The Connection & Settings tab now shows which ClickBlog.net account this site is connected to. Until now the screen only said "Connected", so there was no way to tell which account a key belonged to. Existing sites will see it after pressing Save & Test Connection once. 112 * Fixed: if the featured image could not be downloaded or added to the media library, the post was published without it and nothing was said — you spent the image credits and were left guessing. The result now says what happened and why. (Some hosts block outbound requests from WordPress, which is when this happens.) 113 * The plugin version is now included with every request to ClickBlog.net, so support can tell which version a site is running. 101 114 102 115 = 1.5.1 = … … 161 174 == Upgrade Notice == 162 175 176 = 1.5.2 = 177 Fixes a case where a failed post was reported as published. Update by replacing the plugin — do not delete it first, as deleting removes your saved API key. 178 163 179 = 1.5.1 = 164 180 Disconnecting inside WordPress now updates your ClickBlog account too. Update by replacing the plugin — do not delete it first, as deleting removes your saved API key. -
clickblog/trunk/uninstall.php
r3636017 r3656070 18 18 delete_option( 'clickblog_saas_url' ); 19 19 delete_option( 'clickblog_connected_at' ); 20 // 연동된 ClickBlog 계정 표시용. 21 delete_option( 'clickblog_account_email' ); 20 22 delete_option( 'clickblog_credits' ); 21 23 delete_option( 'clickblog_default_author' );
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)