ওয়ার্ডপ্রেস প্লাগইন বিকাশ - শিরোনাম ইতিমধ্যে পাঠানো বার্তা


15

আমি ওয়ার্ডপ্রেস প্লাগইন বিকাশ করছি। আমি যখন আমার প্লাগইনটি সক্রিয় করি তখন আমি নিম্নলিখিত বার্তাটি পাই:

সক্রিয়করণের সময় প্লাগইনটি অপ্রত্যাশিত আউটপুটটির 293 টি অক্ষর উত্পন্ন করেছিল। যদি আপনি "শিরোনাম ইতিমধ্যে প্রেরিত" বার্তা, সিন্ডিকেশন ফিডস বা অন্যান্য সমস্যার সাথে সমস্যা দেখেন তবে এই প্লাগইনটি নিষ্ক্রিয় করার বা অপসারণ করার চেষ্টা করুন।

প্লাগইনটি খুব ভালভাবে কাজ করছে তবে আমি কেন জানি না কেন আমি এই বার্তাটি পাচ্ছি। আমার প্লাগইনটি হ'ল: http://wordpress.org/extend/plugins/facebook-send- Like-button /


যদি ডিবাগিং সক্ষম থাকে, পিএইচপি যদি কোনও সতর্কতা আউটপুট করে থাকে তবে আপনি এটি পেতে পারেন।
মিলো

1
আপনি আপনার প্লাগইন পিএইচপি ফাইলগুলির শেষে পিএইচপি বন্ধ ট্যাগগুলির পরে কোনও সাদা স্থান রেখেছেন কিনা তা পরীক্ষা করে দেখুন।
সিসির

1
আপনি যদি একটি ডিবাগার ব্যবহার করে থাকেন, তারপর কাছাকাছি একটি ব্রেকপয়েন্ট করা activate_plugin methodমধ্যে wordpress/wp-admin/includes/plugin.php। $ আউটপুট ভেরিয়েবলের বিষয়বস্তু আপনাকে ব্যতিক্রমের মধ্যে লোড হওয়া ডেটাটি অদৃশ্যভাবে নিক্ষেপ করা হবে এবং তারপরে ওয়ার্ডপ্রেসে অবহেলিত করবে।
টড হলবার্গ

উত্তর:


10

আমার অনুমান যে আপনি একটি পিএইচপি ত্রুটি পেয়েছেন, যা শিরোনামগুলি প্রেরণের আগে আউটপুট উত্পন্ন করে। আপনি যদি E_NOTICEসক্ষম করে থাকেন $_POST['foo']তবে কলটি যদি সেই পরিবর্তনশীলটি সেট না করা থাকে তবে "নোটিশ: অপরিজ্ঞাত পরিবর্তনশীল" ত্রুটি তৈরি করতে পারে।

সেরা অনুশীলন: জিইটি, পোস্ট, কুকি এবং অনুরোধ ভেরিয়েবল সম্পর্কে কখনই অনুমান করবেন না। সর্বদা isset()বা আগে ব্যবহার করে পরীক্ষা করুন empty()

if ( isset( $_POST['foo'] ) ) {
    $foo = (string) $_POST['foo'];
    // apply more sanitizations here if needed
}

13

এটি সাধারণত খোলার <?phpট্যাগের আগে বা ক্লোজিং ?>ট্যাগের পরে ফাঁকা জায়গা বা নতুন লাইনগুলির কারণে ঘটে ।

কিছু সমাধান দেখতে এই পৃষ্ঠাটি দেখুন: আমি ইতিমধ্যে পাঠানো সতর্কতা সমস্যাটি কীভাবে সমাধান করব?

হালনাগাদ

আপনার প্লাগইন কোড পরীক্ষা করার পরে, একটি জিনিস আমি লক্ষ্য করেছি যে আপনার কাছে কোনও ক্লোজিং পিএইচপি ট্যাগ নেই। শেষ লাইনে যোগ করুন?>


4
পিএইচপি ফাইলগুলির ক্লোজিং ?>ট্যাগের প্রয়োজন হয় না । প্রকৃতপক্ষে, গ্যারান্টি দেওয়ার একটি উপায় যা এর ফলে Headers already sentসমস্যা সৃষ্টি হবে না তা হ'ল ক্লোজিং ট্যাগটি ছেড়ে দেওয়া।
জন পি ব্লচ

2
এটা আমার সমস্যা ছিল। আমার বন্ধ হওয়ার পরে আমার কাছে বেশ কয়েকটি ফাঁকা লাইন ছিল ?>
ক্যাম জ্যাকসন

1
ক্লোজিং পিএইচপি ট্যাগ ব্যবহার করার পরামর্শ দিবেন না। এটি একটি খারাপ অনুশীলন যা ওপিতে সমস্যার ধরণের দিকে পরিচালিত করে, এবং এটি ডাব্লুপি কোর কোডিং মানদণ্ডের বিপরীতে যায় ( make.wordpress.org/core/handbook/best-practices/… দেখুন )
butlerblog

4

আপনার অ্যাক্টিভেশন ক্রিয়াকলাপের শুরুতে একটি ob_start();এবং একটি শেষে রাখুনtrigger_error(ob_get_contents(),E_USER_ERROR);

তারপরে আপনার প্লাগইনটি সক্রিয় করার চেষ্টা করুন এবং তারপরে আপনি দেখতে পাচ্ছেন যে ' অপ্রত্যাশিত আউটপুটটির 293 টি অক্ষর ' আসলে কী। তারপরে ডিবাগিংয়ের পরে এটি আরও সহজ হবে (হয় নতুন লাইন বর্ণগুলি সরিয়ে ফেলুন বা কিছু ত্রুটি সমাধান করুন)।


এটি আসলে ত্রুটির পাখির প্রতিভা সমাধান ... ধন্যবাদ ..
ওবর্ম্ক ক্রোনেন

3

আমি আগেও একই সমস্যার মুখোমুখি হয়েছি, আমার জন্য এটি ছিল অতিরিক্ত সাদা জায়গা। আমি সেই সমস্ত সাদা স্পেসগুলি সরিয়ে দেওয়ার পরে কোনও ত্রুটি / সতর্কতা ছাড়াই প্লাগইনটি সক্রিয় করতে পারে।


1

আমি সমস্যাটি ইতিবাচক নই তবে আমি এটি সম্পর্কে বেশ নিশ্চিত।

দ্বিতীয় যুক্তি হিসাবে আপনাকে বৈধ কলব্যাক ব্যবহার করতে হবে register_activation_hook():

register_activation_hook(__FILE__,'twl_tablo_olustur');

আমি যতদূর বলতে পারি, আপনি twl_tablo_olustur()কোথাও সংজ্ঞায়িত করেন নি। এটি অবশ্যই অপ্রত্যাশিত আউটপুটকে ব্যাখ্যা করবে (একটি অস্তিত্বহীন ক্রিয়াকলাপটি কল করার চেষ্টা থেকে উত্পন্ন পিএইচপি ত্রুটি), এবং অন্য সমস্ত পরিস্থিতিতে কেন এটি ঠিক কাজ করে তা ব্যাখ্যা করবে।


ধন্যবাদ. কিন্তু register_activation_hook(__FILE__,'twl_tablo_olustur');পুরোনো সংস্করণ থেকে এই কোড। নতুন সংস্করণে (আপনি পরীক্ষা করতে পারেন, v1.3) এটি আপডেট হয়েছে, তবে এখনও একই ত্রুটি।
অ্যারে

1

প্লাগইন / থিম ডিবাগ বার্তাগুলি আউটপুট করার সময় আমি এই বার্তাগুলি প্রচুর পেতে চাইছি, বিশেষত যখন আমি ডাব্লুপি_হেডার কল করার আগে স্টাফ আউটপুট করছি।

যদি আপনি কোনও অক্ষর আউটপুট করে থাকেন তবে আমি বিশ্বাস করি (এখানে ভুল হতে পারে) একটি অন্তর্নিহিত শিরোলেখের ঘোষণাপত্র রয়েছে, তাই যখন স্বাভাবিক শিরোনাম () কলটি আসে তখন আপনি ত্রুটিটি পেয়ে যাবেন যেহেতু আপনার 2 টি শিরোনামের ঘোষণা নেই।

আউটপুটটি বাফার করতে আপনি ob_start () ব্যবহার করতে পারেন, যা ত্রুটিটি সরিয়ে ফেলতে হবে - এখানে মন্তব্যগুলিতে একবার দেখুন: http://php.net/manual/en/function.header.php


1

আমি জানি এটি একটি পুরানো প্রশ্ন এবং এর একটি স্বীকৃত উত্তর রয়েছে। অ্যাক্টিভেশন ইস্যুটি সম্ভাব্য কী হতে পারে তা কভার করে এমন অনেক উত্তর রয়েছে । তবে, উত্তরগুলির কোনওই প্লাগইন অ্যাক্টিভেশন সহ সমস্যাগুলি ডিবাগ করার জন্য HOW এর মূল ইস্যুতে পাওয়া যায় না ।

আপনি যদি ডাব্লুপি প্লাগইনগুলি বিকাশ করতে চলেছেন তবে আপনি কাজের জন্য সঠিক সরঞ্জামগুলিও ব্যবহার করতে পারেন। এর মধ্যে একটি হ'ল ডিবাগ বার । এটি এমন একটি প্লাগইন যা আপনাকে ডব্লিউপি-তে সমস্যাগুলি ডিবাগ করতে সহায়তা করে। আপনি যদি একটি প্লাগইন বিকাশকারী হন তবে এটি আপনার সরঞ্জামবক্সে থাকা উচিত।

ডিবাগ বারে রয়েছে অ্যাড-অন্স - প্লাগইনটির জন্য প্লাগিনগুলি, আপনি যদি করেন। এর মধ্যে একটি হ'ল ডিবাগ বার প্লাগইন অ্যাক্টিভেশন , যা আপনাকে পিএইচপি ত্রুটি দেখাবে যখন প্লাগইন সক্রিয় হয়। একবার আপনি যখন জানলেন যে পিএইচপি ত্রুটিটি হ'ল শিরোনামগুলি প্রেরণের কারণ হয়ে থাকে, তখন আপনি এটি জানেন যে এটি সংশোধন করার জন্য আপনাকে কোথায় তাকানো উচিত। আমার বিশ্বাস, বুদ্ধিমান কি ত্রুটি হয় আপনি যদি এর পরিবর্তে বের করার চেষ্টা করার সময় একটি টন সংরক্ষণ করতে পারবেন জিনিসটা কি ত্রুটি হতে পারে


আপনাকে ধন্যবাদ, এটি খুব সহায়ক!
ব্যবহারকারী 1190132

0

প্লাগইনটির সর্বশেষ সংশোধন (381724) দেখে সমস্যাটি অনেক বেশি স্থান

প্রতিবার আপনি এই কাঠামোটি তৈরি করতে চান:

function blabla(){
   <= space
   something...
}

আপনার কোডে শূন্যস্থান নয়, টিএবি ব্যবহার করুন।

এখানে আপনার কোডটি যেখানে আমি সমস্ত স্পেসগুলি ট্যাবগুলির সাথে প্রতিস্থাপন করেছি এবং সক্রিয়করণে আমি কোনও বার্তা পাই না:

<?php
/*
Plugin Name: Facebook Send Button By Teknoblogo.com
Plugin URI: http://www.teknoblogo.com/facebook-gonder-butonu-eklenti
Description: Adds Facebook's Send and Like buttons to your posts ! Author : <a href="http://www.teknoblogo.com">teknoblogo.com</a>
Version: 1.3
Author: Eray Alakese
Author URI: http://www.teknoblogo.com
License: GPL2
*/

wp_register_script('fgb_script', "http://connect.facebook.net/en_US/all.js#xfbml=1");
wp_enqueue_script('fgb_script');

function fgb_ayarlari_yap()
{
    add_option('fgb_yer', 'u');
    add_option('fgb_buton', 'snl');
    add_option('fgb_manual', 'hayir');
}
register_activation_hook( __FILE__, 'fgb_ayarlari_yap' );
function fgb_ayarlari_sil()
{
    delete_option('fgb_yer');
    delete_option('fgb_buton');
    delete_option('fgb_manual');
}
register_deactivation_hook( __FILE__, 'fgb_ayarlari_sil' );


function fgb_ekle($content)
{
    $fgb_yer = get_option('fgb_yer'); 
    $fgb_buton_opt = get_option('fgb_buton'); 
    $fgb_manual = get_option('fgb_manual');
    $fgb_perma  = rawurlencode(get_permalink());
    $fgb_send_button = "<fb:send href=\"$fgb_perma\" font=\"\"></fb:send>";
    $fgb_like_button = "<fb:like href=\"$fgb_perma\" send=\"false\" width=\"450\" show_faces=\"true\" font=\"\"></fb:like>";
    $fgb_snl_button = "<fb:like href=\"$fgb_perma\" send=\"true\" width=\"450\" show_faces=\"true\" font=\"\"></fb:like>";
    if($fgb_buton_opt == "send")
    {
        $fgb_buton = $fgb_send_button;
    }
    elseif($fgb_buton_opt == "like")
    {
        $fgb_buton = $fgb_like_button;
    }
    elseif($fgb_buton_opt == "snl")
    {
        $fgb_buton = $fgb_snl_button;
    }
    else
    {
        echo "Buton türü alınamadı!";
    }

    if ($fgb_manual=="hayir"){
        if ($fgb_yer == "u")
        {
            $content = $fgb_buton."<br />".$content;
        }
        elseif ($fgb_yer == "a")
        {
            $content = $content."<br />".$fgb_buton;
        }
        return $content;
    }
    elseif($fgb_manual=="evet"){
        echo $fgb_buton;
    }
}
if (get_option('fgb_manual')=="hayir"){ add_filter( "the_content", "fgb_ekle" ); }

add_action('admin_menu', 'fgb_admin_menu');
function fgb_admin_menu() {
    add_options_page('Facebook Send Button', 'Facebook Send Button', 'manage_options', 'fgb', 'fgb_admin_options');
}
function fgb_admin_options() {
    if (!current_user_can('manage_options'))  {
        wp_die( __('You do not have sufficient permissions to access this page.') );
    }
    echo '<div class="wrap">';
    ?>
    <h2>Facebook Send & Like Button</h2>
    <? 
    if($_POST["fgb_gonder"])
    {
      echo "<h3>saved</h3>";
      update_option('fgb_yer', $_POST["fgb_yer"]);
      update_option('fgb_buton', $_POST["fgb_buton"]);    
      update_option('fgb_manual', $_POST["fgb_manual"]);

        $fgb_admin_yer = get_option('fgb_yer');
        $fgb_admin_buton = get_option('fgb_buton');
        $fgb_admin_manual = get_option('fgb_manual');
    }
    ?>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
    Show Facebook buttons <select name="fgb_yer">
        <option value="u" <?php if($fgb_admin_yer == "u"){echo "SELECTED";}?>>before content</option>
        <option value="a" <?php if($fgb_admin_yer == "a"){echo "SELECTED";}?>>after content</option>
    </select> and i want <select name="fgb_buton">
        <option value="snl" <?php if($fgb_admin_buton=="snl"){echo "SELECTED";}?>>send and like buttons together</option>
        <option value="send" <?php if($fgb_admin_buton=="send"){echo "SELECTED";}?>>just send button</option>
        <option value="like" <?php if($fgb_admin_buton=="like"){echo "SELECTED";}?>>just like button</option>
    </select> . <br />
    <input type="radio" value="hayir" name="fgb_manual" <?php if($fgb_admin_manual=="hayir"){echo "CHECKED";}?> /> put buttons for me, AUTOMATICALLY <br />
    <input type="radio" value="evet" name="fgb_manual" <?php if($fgb_admin_manual=="evet"){echo "CHECKED";}?> /> i can put them, MANUALLY <br />

    <input type="submit" class="button-primary" name="fgb_gonder" value="<?php _e('Save Changes') ?>" />
    </form>
    <br />If you use <strong>manuel insertion</strong> , you have to add this code to your theme : 
    <strong>&lt;?php if(function_exists('fgb_ekle')) {   fgb_ekle(); }?&gt;</strong>

    <hr />
    <em>If you like this plugin, please <a href="http://wordpress.org/extend/plugins/facebook-send-like-button/">vote</a> .
    Author : <a href="http://www.teknoblogo.com">Eray Alakese</a>
    You can <a href="mailto:info@teknoblogo.com">mail me</a> for bugs, thanks.</em>

    <?php
    echo '</div>';
}

2
এটির সাথে কিছু করার দরকার নেই। আপনার ফাংশনগুলির মধ্যে ফাঁকা স্থান এবং ট্যাব গ্রহণযোগ্য এবং এই ত্রুটিটি উত্পাদন করে না।
ম্যাথু মুরো

কোনও ফাংশনের ভিতরে আপনি সঠিক হন তবে যদি ফাংশনটি সরাসরি function blabla(){?> <input> <?php code... ?> output something <?php code.. }কোনও ফলাফল দেয় যেমন: তবে সে ক্ষেত্রে তা নয়।
বাইনারনেট

2
@ ম্যাথেজমুরো: আপনি যদি কোনও ফাংশনের অভ্যন্তরে স্থানটি ছেড়ে দেন তবে তার ওকি তবে আপনি যদি পিএইচপি ক্লোজিং ট্যাগগুলির পরে কোনও সাদা স্থান / লাইন বিরতি ছেড়ে যান ?>তবে আপনি পাবেন header already send errorকারণ এই অতিরিক্ত সাদা স্থানগুলি যখন পিএইচপি ইঞ্জিনটি পার্স করবে তখন মুদ্রণ করবে।
সিসির

0

আপনি প্রতিটি ফাইলের শেষ থেকে পিএইচপি ক্লোজ ট্যাগ (?>) সরিয়েছেন। এবং পিএইচপি বন্ধ করার পরে সমস্ত ফাঁকা স্থানও মুছে ফেলুন (?>)

আপনি যখন প্লাগইনটি সক্রিয় করবেন কেবলমাত্র টেবিলটি ইতিমধ্যে রয়েছে কিনা তা পরীক্ষা করে দেখুন।

আমি কোড দ্বারা সমস্যাটি সরিয়েছি

    if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {

        $sql = "CREATE TABLE {$table_name}(
            id INT NOT NULL AUTO_INCREMENT,
            name VARCHAR(250),
            email VARCHAR(250),
            PRIMARY KEY (id)
        );";
        dbDelta($sql);
    }

-3

আমার সমস্যাটি ছিল ফাইলটি একটি ইউটিএফ -8 ফাইল হিসাবে সংরক্ষণ করা হয়েছিল। কোডেপজ 1252 দিয়ে এটিকে সংরক্ষণ করা ত্রুটির সমাধান করেছে।


1
দুঃখিত, এটা ভুল। ওয়ার্ডপ্রেসের সমস্ত কিছুই ইউটিএফ -8 এনকোডযুক্ত, উইন্ডোজ -১২২২ আপনি অ-এসসিআইআই অক্ষর ব্যবহার করার মুহুর্তে সাইটটি ভেঙে ফেলবে।
ফুসিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.