├── readme.md └── .github └── workflows ├── add-publish-checks.yml └── label-notifier.yml /readme.md: -------------------------------------------------------------------------------- 1 | # Welcome 2 | 3 | to the GitHub space where WordPress teams coordinate content to be published on the [Developer Blog](https://developer.wordpress.org/news/). 4 | 5 | - [How to contribute](https://developer.wordpress.org/news/how-to-contribute/) 6 | - [Tips and guidelines for Writers](https://developer.wordpress.org/news/tips-and-guidelines-for-writers/) 7 | - [About Page](https://developer.wordpress.org/news/about/) 8 | - [The Project Board](https://github.com/orgs/WordPress/projects/44/). 9 | 10 | For discussion, questions and meetings, please join the WordPress [#core-dev-blog](https://wordpress.slack.com/archives/C03RL47B3S8) channel. Editorial Group meetings are held every first Thursday of the month. Meeting notes are published on the [Make Core Blog with the tag #core-dev-blog](https://make.wordpress.org/core/tag/core-dev-blog/) 11 | 12 | Any suggestions/issues for the Developer Blog (bugs, design enhancements...) can be reported in the form of an issue in https://github.com/WordPress/wporg-developer-blog/issues 13 | 14 | ## Background 15 | 16 | - The proposal to [create a Developer Blog](https://make.wordpress.org/core/2022/02/25/proposal-to-start-a-news-blog-on-developer-wordpress-org/) was published in February 2022 17 | - In July 2022, the [proposal for the editorial processes](https://make.wordpress.org/core/2022/07/06/proposed-editorial-process-for-the-new-developer-blog/) was published. 18 | - [WordPress Developer Blog is in public beta](https://make.wordpress.org/core/2022/11/21/wordpress-developer-blog-is-in-public-beta/) 19 | -------------------------------------------------------------------------------- /.github/workflows/add-publish-checks.yml: -------------------------------------------------------------------------------- 1 | name: Add pre and post publishing check list as comment 2 | on: 3 | issues: 4 | types: [labeled] 5 | 6 | jobs: 7 | add-comment: 8 | if: ${{ github.event.label.name == 'flow-ready to publish' }} 9 | runs-on: ubuntu-latest 10 | permissions: 11 | issues: write 12 | steps: 13 | - name: Add pre and post publishing check list as comment 14 | run: gh issue comment "$NUMBER" --body "$BODY" 15 | env: 16 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 17 | GH_REPO: ${{ github.repository }} 18 | NUMBER: ${{ github.event.issue.number }} 19 | BODY: | 20 | ### Pre-publishing checklist 21 | - [ ] Post Title and subheaders in sentence case 22 | - [ ] Are Category or Categories selected? 23 | - [ ] Are Tags identifies? 24 | - [ ] Is there an explicit Excerpt? 25 | - [ ] Are all images files uploaded to the media library 26 | - [ ] Do all images have an alt-text? 27 | - [ ] Are all code blocks using the **Code** Block? 28 | - [ ] For TOC us the Pattern under _Developer Blog > Table of contents_ 29 | - [ ] Assign or upload a featured image ([Figma templates to get started](https://www.figma.com/design/Mq3GKVCsHI7NpKbgeU9H2m/Developer-Blog?m=auto&t=S2ZDPdmjTz6GiCLl-7)) 30 | - [ ] Props added? (See [Guidelines](https://make.wordpress.org/core/handbook/best-practices/post-comment-guidelines/#giving-proper-credit-props)) 31 | 🙌 Publish! 📗 32 | ### Post-publishing checklist 33 | - [ ] add Props for reviews to #props channel in WP Slack ([Example](https://wordpress.slack.com/archives/C0FRG66LR/p1689098122307029)) (use Slack handles) 34 | - [ ] close the issue with a comment to link to the published post 35 | - [ ] close the accompanying discussion with the link to the published post. 36 | 37 | 38 | -------------------------------------------------------------------------------- /.github/workflows/label-notifier.yml: -------------------------------------------------------------------------------- 1 | name: Notify users based on roundup label 2 | on: 3 | issues: 4 | types: [labeled] 5 | schedule: 6 | # Run daily at 9 AM UTC to check for 20-day-old issues 7 | - cron: '0 9 * * *' 8 | env: 9 | RECIPIENTS: '@bph @adamziel @jonathanbossenger @alexapeduzzi @fellyph' 10 | 11 | jobs: 12 | # Initial notification when label is applied 13 | initial-notification: 14 | if: github.event_name == 'issues' && contains(github.event.issue.labels.*.name, 'Monthly Roundup') 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Notify on Monthly Roundup label 18 | uses: actions/github-script@v7 19 | with: 20 | script: | 21 | const recipients = process.env.RECIPIENTS 22 | const message = `Heads-up ${recipients}: To include your project's **news for developers**, please add the information or a link as a comment to this issue.\n**Deadline 5th of next month.**`; 23 | 24 | await github.rest.issues.createComment({ 25 | owner: context.repo.owner, 26 | repo: context.repo.repo, 27 | issue_number: context.issue.number, 28 | body: message 29 | }); 30 | 31 | # Follow-up notification after 20 days 32 | followup-notification: 33 | if: github.event_name == 'schedule' 34 | runs-on: ubuntu-latest 35 | steps: 36 | - name: Send 20-day reminder for Monthly Roundup issue 37 | uses: actions/github-script@v7 38 | with: 39 | script: | 40 | const recipients = process.env.RECIPIENTS; 41 | 42 | // Get the single open Monthly Roundup issue (if it exists) 43 | const issues = await github.rest.issues.listForRepo({ 44 | owner: context.repo.owner, 45 | repo: context.repo.repo, 46 | state: 'open', 47 | labels: 'Monthly Roundup', 48 | per_page: 1 49 | }); 50 | 51 | if (issues.data.length === 0) { 52 | console.log('No open Monthly Roundup issues found'); 53 | return; 54 | } 55 | 56 | const issue = issues.data[0]; 57 | const createdDate = new Date(issue.created_at); 58 | const daysSinceCreation = Math.floor((Date.now() - createdDate.getTime()) / (1000 * 60 * 60 * 24)); 59 | 60 | console.log(`Issue #${issue.number} is ${daysSinceCreation} days old`); 61 | 62 | // Only proceed if issue is exactly 20 days old (within 24-hour window) 63 | if (daysSinceCreation < 20 || daysSinceCreation >= 21) { 64 | console.log('Issue not in 20-day window, skipping'); 65 | return; 66 | } 67 | 68 | // Check if follow-up already sent to avoid duplicates 69 | const comments = await github.rest.issues.listComments({ 70 | owner: context.repo.owner, 71 | repo: context.repo.repo, 72 | issue_number: issue.number 73 | }); 74 | 75 | const hasFollowup = comments.data.some(comment => 76 | comment.body.includes('📢 20-Day Follow-up Reminder') 77 | ); 78 | 79 | if (hasFollowup) { 80 | console.log('Follow-up already sent, skipping'); 81 | return; 82 | } 83 | 84 | // Send the follow-up notification 85 | const message = `📢 Reminder ${recipients} The publication deadline is approaching (5th of the month).`; 86 | 87 | await github.rest.issues.createComment({ 88 | owner: context.repo.owner, 89 | repo: context.repo.repo, 90 | issue_number: issue.number, 91 | body: message 92 | }); 93 | 94 | console.log(`✅ Sent 20-day follow-up for issue #${issue.number}`); 95 | --------------------------------------------------------------------------------