<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ozan Yıldırım</title>
    <description>The latest articles on DEV Community by Ozan Yıldırım (@ozanyildirim).</description>
    <link>https://dev.to/ozanyildirim</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3316675%2F18f25932-c9b5-47f2-b32c-75f4df38a3d3.jpg</url>
      <title>DEV Community: Ozan Yıldırım</title>
      <link>https://dev.to/ozanyildirim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ozanyildirim"/>
    <language>en</language>
    <item>
      <title>RSS to X (Twitter) PHP Bot</title>
      <dc:creator>Ozan Yıldırım</dc:creator>
      <pubDate>Sat, 18 Oct 2025 23:27:31 +0000</pubDate>
      <link>https://dev.to/ozanyildirim/rss-to-x-twitter-php-bot-2cbd</link>
      <guid>https://dev.to/ozanyildirim/rss-to-x-twitter-php-bot-2cbd</guid>
      <description>&lt;p&gt;&lt;a href="https://minicoursey.com/rss-to-x-twitter-php-bot" rel="noopener noreferrer"&gt;RSS to X (Twitter) PHP Bot&lt;/a&gt;. Most sites already broadcast updates via RSS, but posting to X (Twitter) is still a manual chore. In this mini build, we ship a self-hosted PHP bot that reads your RSS feed and publishes new items to X using the official API—no plugins, no monthly fees. It’s the sibling of our Instagram bot: simple cURL requests, a little formatting, and a cron job.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsqp74msybi6tldrivnd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsqp74msybi6tldrivnd7.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What it does&lt;/p&gt;

&lt;p&gt;Reads RSS and picks the latest items (with a per-run limit).&lt;/p&gt;

&lt;p&gt;Builds the post text (title + link, truncated to fit X limits).&lt;/p&gt;

&lt;p&gt;Calls X API with a bearer token to publish.&lt;/p&gt;

&lt;p&gt;De-dupes items (so you don’t double-post) and avoids overlapping runs.&lt;/p&gt;

&lt;p&gt;Why this approach&lt;/p&gt;

&lt;p&gt;Total control (self-hosted), zero subscriptions.&lt;/p&gt;

&lt;p&gt;Works with any stack (plain PHP + cURL).&lt;/p&gt;

&lt;p&gt;Easy to extend: hashtags, UTM links, schedules, language filters…&lt;/p&gt;

&lt;p&gt;What you’ll need (no secrets shown)&lt;br&gt;
An X developer account and a Bearer token for posting (app in write mode).&lt;/p&gt;

&lt;p&gt;A public RSS feed URL.&lt;/p&gt;

&lt;p&gt;PHP with cURL.&lt;/p&gt;

&lt;p&gt;(Optional) a tiny file/DB store to remember posted GUIDs.&lt;/p&gt;

&lt;p&gt;Posting flow (high-level):&lt;/p&gt;

&lt;p&gt;GET RSS → parse items&lt;/p&gt;

&lt;p&gt;For each unseen item: build status = "{title} {short_link}"&lt;/p&gt;

&lt;p&gt;POST to X’s API with Authorization: Bearer …&lt;/p&gt;

&lt;p&gt;Store GUID hash to avoid duplicates&lt;a href="https://minicoursey.com/rss-to-x-twitter-php-bot" rel="noopener noreferrer"&gt;RSS to X (Twitter) PHP Bot&lt;/a&gt;. Most sites already broadcast updates via RSS, but posting to X (Twitter) is still a manual chore. In this mini build, we ship a self-hosted PHP bot that reads your RSS feed and publishes new items to X using the official API—no plugins, no monthly fees. It’s the sibling of our Instagram bot: simple cURL requests, a little formatting, and a cron job.&lt;/p&gt;

&lt;p&gt;What it does&lt;/p&gt;

&lt;p&gt;Reads RSS and picks the latest items (with a per-run limit).&lt;/p&gt;

&lt;p&gt;Builds the post text (title + link, truncated to fit X limits).&lt;/p&gt;

&lt;p&gt;Calls X API with a bearer token to publish.&lt;/p&gt;

&lt;p&gt;De-dupes items (so you don’t double-post) and avoids overlapping runs.&lt;/p&gt;

&lt;p&gt;Why this approach&lt;/p&gt;

&lt;p&gt;Total control (self-hosted), zero subscriptions.&lt;/p&gt;

&lt;p&gt;Works with any stack (plain PHP + cURL).&lt;/p&gt;

&lt;p&gt;Easy to extend: hashtags, UTM links, schedules, language filters…&lt;/p&gt;

&lt;p&gt;What you’ll need (no secrets shown)&lt;br&gt;
An X developer account and a Bearer token for posting (app in write mode).&lt;/p&gt;

&lt;p&gt;A public RSS feed URL.&lt;/p&gt;

&lt;p&gt;PHP with cURL.&lt;/p&gt;

&lt;p&gt;(Optional) a tiny file/DB store to remember posted GUIDs.&lt;/p&gt;

&lt;p&gt;Posting flow (high-level):&lt;/p&gt;

&lt;p&gt;GET RSS → parse items&lt;/p&gt;

&lt;p&gt;For each unseen item: build status = "{title} {short_link}"&lt;/p&gt;

&lt;p&gt;POST to X’s API with Authorization: Bearer …&lt;/p&gt;

&lt;p&gt;Store GUID hash to avoid duplicates&lt;/p&gt;

&lt;p&gt;Code &amp;amp; Source : &lt;a href="https://minicoursey.com/rss-to-x-twitter-php-bot" rel="noopener noreferrer"&gt;https://minicoursey.com/rss-to-x-twitter-php-bot&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>twitter</category>
      <category>rss</category>
      <category>automation</category>
    </item>
    <item>
      <title>RSS to Instagram PHP Bot</title>
      <dc:creator>Ozan Yıldırım</dc:creator>
      <pubDate>Sat, 18 Oct 2025 21:57:02 +0000</pubDate>
      <link>https://dev.to/ozanyildirim/rss-to-instagram-php-bot-1h4j</link>
      <guid>https://dev.to/ozanyildirim/rss-to-instagram-php-bot-1h4j</guid>
      <description>&lt;p&gt;&lt;strong&gt;Ship RSS to Instagram with a Tiny PHP Bot (No Plugins, No CMS)&lt;/strong&gt;&lt;br&gt;
Most blogs already syndicate updates through RSS—but Instagram is still a manual grind. In this mini-build, we turn any site (ours wasn’t WordPress) into an auto-publisher: new RSS items → square, readable title cards → posted to an Instagram Professional account via the Instagram Graph API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9esgfneqt2ctosi6hlqb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9esgfneqt2ctosi6hlqb.jpg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal is practical and reproducible:&lt;/p&gt;

&lt;p&gt;Input: your site’s RSS feed.&lt;br&gt;
Transform: generate a clean 1080×1080 image with the post title (high contrast, safe margins, custom font).&lt;br&gt;
Output: publish to your own Instagram Business/Creator account using the two-step Graph flow (/media → /media_publish).&lt;br&gt;
&lt;strong&gt;Why this approach?&lt;/strong&gt;&lt;br&gt;
No third-party schedulers: Great tools exist, but monthly fees add up. We wanted a zero-subscription path we control.&lt;br&gt;
Works with any stack: It’s plain PHP with cURL and GD. Drop-in files; no Composer required.&lt;br&gt;
Readable thumbnails: Instead of reusing wide (1200×630) OG images that shrink poorly in the grid, we render a square title card that stays legible on mobile.&lt;br&gt;
&lt;strong&gt;What we built (at a glance)&lt;/strong&gt;&lt;br&gt;
rss_to_instagram.php — polls your RSS, de-dupes posts, creates a media container, then publishes.&lt;br&gt;
iggen.php — a tiny image endpoint that renders title-only square cards (configurable padding, font, colors). Returns JPEG (IG requirement).&lt;br&gt;
Optional helpers used during setup (not required in production): OAuth login to get a user token, exchange for a page token, quick “test publish” scripts, and small diagnostics.&lt;br&gt;
&lt;strong&gt;Requirements (the non-negotiables)&lt;/strong&gt;&lt;br&gt;
Instagram Professional account (Business or Creator) linked to a Facebook Page.&lt;br&gt;
A Facebook App in Development mode, with you as Admin/Tester.&lt;br&gt;
Permissions requested at login: instagram_basic, pages_show_list, pages_read_engagement, and instagram_content_publish.&lt;br&gt;
Use a Page Access Token when publishing (user tokens won’t publish).&lt;br&gt;
&lt;strong&gt;Security &amp;amp; housekeeping&lt;/strong&gt;&lt;br&gt;
Never commit secrets. In the sample code we’ll publish, all tokens/IDs are redacted and loaded from environment variables or a local config file ignored by Git.&lt;br&gt;
Add a simple file lock so your cron job can’t double-run.&lt;br&gt;
Consider a tiny de-dup store (file or DB) keyed by RSS guid to avoid accidental reposts.&lt;br&gt;
&lt;strong&gt;What you’ll learn&lt;/strong&gt;&lt;br&gt;
How to grab a long-lived user token, derive a Page Access Token, and publish safely.&lt;br&gt;
How to generate consistently readable IG images with GD (font selection, padding, fallback).&lt;br&gt;
How to harden a quick script for real-world use (timeouts, error logging, limits).&lt;br&gt;
In the next section, I’ll share the redacted code snippets and a step-by-step setup. If you can run PHP and edit a couple of files, you can ship this in under an hour—and finally let Instagram take care of itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br&gt;
Instagram Professional (Business or Creator) account linked to a Facebook Page.&lt;/p&gt;

&lt;p&gt;A Facebook App in Development mode. You (the publisher) are Admin/Tester.&lt;/p&gt;

&lt;p&gt;When logging in to get tokens, request these scopes:&lt;br&gt;
instagram_basic, pages_show_list, pages_read_engagement, instagram_content_publish.&lt;/p&gt;

&lt;p&gt;You will publish with a Page Access Token (not a user token).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;continuation of the article and codes:&lt;/strong&gt; &lt;a href="https://minicoursey.com/rss-to-instagram-php-bot" rel="noopener noreferrer"&gt;https://minicoursey.com/rss-to-instagram-php-bot&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>graph</category>
      <category>api</category>
      <category>automation</category>
    </item>
    <item>
      <title>Disable Comments Without Plugin in WordPress</title>
      <dc:creator>Ozan Yıldırım</dc:creator>
      <pubDate>Sat, 26 Jul 2025 22:55:59 +0000</pubDate>
      <link>https://dev.to/ozanyildirim/disable-comments-without-plugin-in-wordpress-4lcb</link>
      <guid>https://dev.to/ozanyildirim/disable-comments-without-plugin-in-wordpress-4lcb</guid>
      <description>&lt;p&gt;Disable Comments Without Plugin to block spam and keep your WordPress site clean. Here’s how to turn off comments site-wide with a simple tweak.&lt;/p&gt;

&lt;p&gt;Step 1: Add the Comments Disable Code&lt;br&gt;
Add this to your child theme’s functions.php:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Disable comments in WordPress
add_action(‘admin_init’, function() {
  // Close comments on all post types
  foreach (get_post_types() as $post_type) {
    if (post_type_supports($post_type, ‘comments’)) {
      remove_post_type_support($post_type, ‘comments’);
      remove_post_type_support($post_type, ‘trackbacks’);
    }
  }
});

// Hide existing comments
add_filter(‘comments_array’, ‘__return_empty_array’, 10, 2);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How It Works&lt;br&gt;
This snippet removes comment and trackback support from all post types and hides any existing comments on your site.&lt;/p&gt;

&lt;p&gt;Why Disable Comments Without Plugin?&lt;br&gt;
Most sites don’t need WordPress comments anymore. Disabling them helps block spam and keeps your database lean.&lt;/p&gt;

&lt;p&gt;Common Mistake&lt;br&gt;
This won’t delete old comment data from your database. Use a cleanup plugin or a manual SQL query if you want to remove existing comments.&lt;/p&gt;

&lt;p&gt;Pro Tip&lt;br&gt;
Always place this tweak in your child theme’s functions.php so it stays active after updates.&lt;/p&gt;

&lt;p&gt;Related Snippet&lt;br&gt;
If you liked this, check out my guide on disabling the WP version number without a plugin in WordPress.&lt;/p&gt;

&lt;p&gt;Source : &lt;a href="https://quickdevtips.com/disable-comments-without-plugin" rel="noopener noreferrer"&gt;https://quickdevtips.com/disable-comments-without-plugin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpresssecurity</category>
      <category>noplugin</category>
      <category>disablecomments</category>
      <category>quickdevtips</category>
    </item>
    <item>
      <title>CSS Overflow — Hidden, Scroll &amp; Auto Explained</title>
      <dc:creator>Ozan Yıldırım</dc:creator>
      <pubDate>Sat, 26 Jul 2025 22:52:22 +0000</pubDate>
      <link>https://dev.to/ozanyildirim/css-overflow-hidden-scroll-auto-explained-57k5</link>
      <guid>https://dev.to/ozanyildirim/css-overflow-hidden-scroll-auto-explained-57k5</guid>
      <description>&lt;p&gt;Ever had content spill out of its container and break your layout? The CSS Overflow property controls what happens when content is larger than its container. Whether you want to hide overflow, add scrollbars, or let the browser decide, mastering Overflow helps you build clean, controlled designs. In this MiniCoursey quick guide, you’ll learn how overflow works, the differences between hidden, scroll, and auto, and when to use each option to keep your layouts tidy.&lt;/p&gt;

&lt;p&gt;What is the Overflow Property?&lt;br&gt;
Overflow tells the browser what to do when an element’s content is too big to fit inside its box. By default, content that overflows just spills out. With Overflow, you can hide it, clip it, or make it scrollable.&lt;/p&gt;

&lt;p&gt;Overflow: Hidden&lt;br&gt;
overflow: hidden; cuts off any content that goes outside the container’s box. This is useful for sliders, cards, or images you want to crop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
  overflow: hidden;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Overflow: Scroll&lt;br&gt;
overflow: scroll; always shows scrollbars — even if they’re not needed. This guarantees the user can scroll to see hidden content.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
  overflow: scroll;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Overflow: Auto&lt;br&gt;
overflow: auto; shows scrollbars only when the content overflows. This is the most common option for flexible, clean layouts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
  overflow: auto;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💡 Pro Tip: You can set overflow for X and Y directions separately with overflow-x and overflow-y.&lt;/p&gt;

&lt;p&gt;⚠️ Common Mistake: Using overflow: hidden can hide important content — make sure it’s intentional!&lt;/p&gt;

&lt;p&gt;FAQ&lt;br&gt;
Q: What’s the default overflow?&lt;br&gt;
A: visible — content just spills outside the box if it’s too big.&lt;/p&gt;

&lt;p&gt;Q: Can I make a scrollable div?&lt;br&gt;
A: Yes! Use overflow: auto or overflow: scroll plus a fixed height or width.&lt;/p&gt;

&lt;p&gt;Related Link&lt;br&gt;
👉 Check out previous: &lt;a href="https://minicoursey.com/css-float-property/" rel="noopener noreferrer"&gt;CSS Float Property&lt;/a&gt; — What It Is &amp;amp; When to Use It&lt;/p&gt;

&lt;p&gt;Where to Learn More&lt;br&gt;
Play with overflow on different containers. MDN’s Overflow docs have clear visuals and examples for tricky cases like scroll shadows and hidden content.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Congrats — you now know how to handle overflowing content with CSS! This small detail keeps your layouts clean, usable, and looking polished.&lt;/p&gt;

&lt;p&gt;✨ Bookmark MiniCoursey for more quick &amp;amp; free mini courses!&lt;/p&gt;

</description>
      <category>overflowhidden</category>
      <category>minicourse</category>
      <category>csstips</category>
      <category>cssoverflow</category>
    </item>
  </channel>
</rss>
